2009-02-26 19 views
8

Al trabajar en aplicaciones web en ASP.NET, ¿cuál es el motivo para especificar un archivo como stylesheet.css.aspx en lugar de simplemente stylesheet.css? He visto esto hecho en varias aplicaciones web.Especificando .aspx al final de un archivo css?

El diseñador web mencionó algo acerca de cómo es un elemento .NET y el almacenamiento de una variable global para la página ASPX, pero realmente no entendí ni conozco la historia completa.

Esto se hace en mi trabajo para una gran aplicación web con diferentes sitios para diferentes países. Esto hace que me pregunte, ¿cuándo crearía aplicaciones web separadas para países diferentes en lugar de una aplicación web que ofrezca diferentes idiomas? ¿Existe una razón de rendimiento, arquitectura u otra razón técnica para hacerlo? Puedo pensar en varias razones no tecnológicas (por ejemplo, consideraciones de SEO).

+0

Extraño ... Me gustaría saber también, nunca me he encontrado con tal técnica. ¿Tal vez están generando dinámicamente los contenidos de la hoja de estilos? –

+0

Nunca me he encontrado con una modificación de extensión para archivos css. Las respuestas a esta pregunta deberían ser iluminadoras. – Cerebrus

+0

debes recordar todo antes de la última. no tiene nada que ver con la extensión de archivo. Obviamente, el creador intenta indicar que se trata de CSS, pero en realidad se trata de un archivo aspx en primer lugar. – annakata

Respuesta

14

Probablemente, la hoja de estilos no es estática y se genera dinámicamente en el servidor.

Esta técnica se puede utilizar para proporcionar una hoja de estilos diferente al considerar varios parámetros (como la selección del tema del usuario o algo así).

aclaración: Si bien puede asignar .css extensión en IIS para ser manejado por ASP.NET. Tiene dos problemas:

  1. Los archivos CSS estáticos también se transmiten al tiempo de ejecución de ASP.NET, lo que provocará una pequeña pérdida de rendimiento.
  2. En muchos entornos de alojamiento compartido, no tiene ningún control sobre las asignaciones de controlador IIS.

A los navegadores web no les importa (al menos, no deberían importar) acerca de la extensión o cualquier otra cosa sobre la URL. Lo único que deberían importar es el encabezado Content-Type. Debe establecerse en text/css; de lo contrario, algunos de ellos pueden quejarse.

+0

sí, pero podría decirle a IIS que procese archivos .css con aspnet_isapi.dll. no hay necesidad de cambiar la extensión. – darasd

+1

En muchos entornos de alojamiento compartido, no tiene permiso para hacerlo, y es más fácil ya que se puede hacer sin ningún cambio de configuración especial. Aunque creo que .aspx no es la mejor manera de hacerlo, .ashx está bastante bien. Lo importante es establecer el tipo de contenido en text/css. –

+0

Debería indicar explícitamente establecer el tipo de contenido en la respuesta; de lo contrario, algunos validadores se quejarán de que no es un archivo CSS. –

3

Una hoja de estilo es solo un archivo de texto; puede especificar cualquier extensión de archivo que desee siempre que coincida con su <link>. En otras palabras, esto funcionará:

<link type="text/css" rel="stylesheet" href="style.foobar"/> 

siempre que su hoja de estilo tenga ese nombre. No puedo pensar en ninguna razón para nombrar la hoja de estilo con una extensión .aspx ya que es engañosa y confusa. [Otras publicaciones tienen buenas explicaciones de por qué podría usarse.]

+0

Esto es correcto, pero, como señaló devio, si utiliza extensiones que están registradas con un controlador en la interconexión de IIS, lo que sucede en el servidor es completamente diferente. – cdonner

+0

Tiene toda la razón, buen punto. –

0

Las hojas de estilo son generalmente archivos de texto estáticos, no hay razón para otorgar una extensión .aspx a menos que se generen dinámicamente.

0

Si nombra una hoja de estilo .aspx, será procesada por el motor ASP.Net en lugar de servir simplemente como un archivo de texto.

Una vez que esté en .Net, puede escribir su CSS sobre la marcha. Sin embargo, preferiría css.aspx parametrizado, ya que el navegador quiere almacenar en caché los archivos CSS.

+0

Puede enviar un encabezado de control de caché con el método Response.Cache.SetCacheability para resolver el problema de almacenamiento en caché. –

1

Como se mencionó, es para permitir que el servidor lo procese como un archivo aspx. Escupirá css, estoy seguro, pero te permitirá hacer el procesamiento en el lado del servidor.

En el ejemplo que proporcionó, si tiene el mismo contenido html para diferentes regiones (quizás traducido, pero con la misma estructura), al tener un archivo css dinámico puede intercambiar, por ejemplo, imágenes de fondo.En general, esto se considera una mala idea, ya que debe agregar diferentes nombres de clase a los elementos html para resolver este problema.

Otra razón común para hacer esto es evitar la duplicación de definiciones de color. Técnicamente, puedes evitar esto también usando nombres de clase, pero se vuelve bastante molesto. La mayoría de la gente quiere tener algo como:

define sitebordercolor #999; define sitebackgroundcolor #fff;

y luego en su CSS, ser capaz de hacer:

.foo { border: 1px solid #sitebordercolor; background-color: #sitebackgroundcolor; }

Sin embargo, CSS doesn' Te dejo hacer eso. Así, mediante el uso de archivos ASPX, se puede lograr el mismo resultado:

.foo { border: 1px solid <%=sitebordercolor %>; background-color: <%=sitebackgroundcolor %>; }

0

Mehrdad's answer en el clavo con respecto a los archivos CSS - así es como hacemos posible que los colores dinámicos en un número de nuestros sitios - tiene el color definido por una cadena de consulta, habilite page caching varying by that query string, y listo.

En respuesta a la parte de la arquitectura de esta pregunta:

Mientras que las consideraciones de SEO recomendaría que el contenido localizado a menudo se sirve desde un servidor local y el dominio (es decir, contenido en francés en un dominio .fr por ejemplo) esto a menudo ISN no es posible

En términos de mantenimiento, es más fácil mantener un sitio web en lugar de varios, por lo que lo compilaría una vez, aprovecharía las funciones de marco para habilitar localisation (archivos de recursos, etc.) y luego podría implementarlo a una ubicación o múltiples como mejor le parezca.

Cuestiones relacionadas