2012-05-02 17 views
6

¿Cuál es una buena estrategia para aplicar automáticamente y/o actualizar las variables del bus caché en mis referencias javascript y de hojas de estilo en un sitio web ASP.Net?Cache Buster Strategy en ASP.Net

E.g. La transformación de

<script type="text/javascript" src="/js/myScript.js" /> 

a

<script type="text/javascript" src="/js/myScript.js?rev=12345" /> 

ACTUALIZACIÓN: no se requiere de integración continua. Estoy usando integración continua (Jenkins para ser específico), por lo que sería genial si el método para actualizar las variables se basara en el número de compilación, por ejemplo.

Si bien puedo vivir aplicando manualmente las variables originales en el código fuente y actualizándolas mediante la estrategia, sería una buena adición si la estrategia también pudiera aplicar la variable original si no existiera (digamos a código heredado).

En la parte superior de mi cabeza, me imagino usando un script Powershell que escanea todos los archivos * .aspx y * .ascx y usa una expresión regular para encontrar las referencias apropiadas y actualizarlas. Pero ya sabes lo que dicen sobre el uso de expresiones regulares ... entonces tengo dos problemas :)

Respuesta

3

La respuesta a las variables de almacenamiento en memoria caché en ASP.Net es utilizar una de las diversas bibliotecas Minificación CSS/JS.

Estaba pensando que tendría que ser actualizada con cada despliegue a nuestros servidores de las variables de almacenamiento en memoria caché, pero las bibliotecas Minificación aplicar una etiqueta hash a partir de los contenidos de los archivos individuales CSS/JS.

Como estoy desarrollando un sitio web de .Net 3.5 mis opciones fueron un poco restringidas. Terminé usando SquishIt (disponible como paquete NuGet) y fue TAN fácil de integrar.

<link href="/<my_css_path>/<css_file_1>.css" rel="stylesheet" type="text/css" /> 
<link href="/<my_css_path>/<css_file_2>.css" rel="stylesheet" type="text/css" /> 
<link href="/<my_css_path>/<css_file_3>.css" rel="stylesheet" type="text/css" /> 

convirtió

<%= Bundle.Css() 
    .Add("~/<my_css_path>") 
    .Render("~/<my_css_path>/combined_#.css") %> 

y que es básicamente! Idea similar con el javascript. Siempre y cuando debug="true" en su web.config para el desarrollo local y debug="false" para sus entornos de producción/producción, SquishIt dejará su CSS/JS sin separar ni unificar para el desarrollo local y luego combinar, minify y hash (para prevención de caché) para su otros ambientes

+0

¡Eso suena increíble! Me alegra que pensaran en la versión local no minificada. – devlord

3

Es posible que también desee examinar Cassette, RequestReduce y Bundler.

Cassette: ordena automáticamente, concatena, minimiza, almacena en caché y versiones todas sus plantillas de JavaScript, CoffeeScript, CSS, LESS, Sass y HTML.

RequestReduce hace que su sitio web más rápido - a veces mucho más rápido - con casi ningún esfuerzo

  • automático genera sprites de las imágenes de fondo
  • Optimiza formato de Sprite PNG y compresión
  • le resta CSS y Javascript
  • Optimiza los encabezados de almacenamiento en caché y ETags
  • Se ejecuta en cualquier sitio web de IIS, incluidos ASP clásico y PHP
  • puede sincronizar cruzando contenido de varios servidores web
  • funciona bien con CDN
  • Compila menos, Sass and Coffee guión

Bundler: "Compilar, Minify, combinar archivos Menos/Sass/CSS/JS/CoffeeScript . Se puede usar fácilmente desde MVC "