Debe establecer encabezados de control de caché en el servidor. Esto se puede hacer por pegar esto en su web.config:
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>
</system.webServer>
Esto podría decirle al navegador ahora incluso comprobar si hay nuevos contenidos en cualquier cosa estática durante 30 días.
Para su segunda pregunta, proporcione algún mecanismo para agregar una cadena de consulta al contenido. En mi proyecto actual, comprimemos y combinamos y javascript y css como parte de la compilación. Al poner enlaces en la página es el siguiente aspecto:
<script src="/Resources/Javascript/Combined.js?v=2.2.0.1901" type="text/javascript"></script>
La cadena de consulta es el número Major.Minor.0.Changeset y cambios en cualquier momento que empujar una acumulación, haciendo que el cliente para volver a buscarla. Lo mismo sucede exactamente en las hojas de estilo en su elemento <link>
.
Las cosas no son tan simples. El almacenamiento en caché es importante si le importa un sitio libre de errores y de buen rendimiento. Desea evitar que los visitantes tengan que volver a descargar el contenido, pero también quiere evitar que los visitantes tengan contenido desactualizado. En ASP.NET MVC utilizo un enfoque que incluye un hash MD5 en la URL que lo logra sin pensarlo demasiado una vez que está configurado. Consulte [mi respuesta aquí] (http://stackoverflow.com/questions/936626/how-can-i-force-a-hard-refresh-ctrlf5/6439351#6439351) para obtener el código fuente. –
@Drew Claro, esto no fue una descripción general del almacenamiento en caché. Simplemente le digo al solicitante que si no necesita un control detallado, los valores predeterminados existentes en los navegadores y servidores no son tan malos. Apache generalmente está configurado para servir ETags, etc. y los navegadores generalmente van junto con 304s. Comprobó su solución, ¡y esa es una buena idea! Es probable que use esa idea en Django pronto. – JAL