Al representar archivos html que hacen referencia a archivos estáticos (.js, .css), ¿cómo maneja la prevención de almacenamiento en memoria caché? ¿Cambia manualmente el blabla.css? v = VERSIONNUMBER cada vez que cambia el archivo? ¿tiene algún mecanismo automático basado en el mtime del archivo?técnicas de detección de memoria caché node.js
Respuesta
Dejo el almacenamiento en caché en el protocolo HTTP, ya que está diseñado para eso. Solo proporcione un encabezado de respuesta ETag
en cada respuesta y agregue compatibilidad para solicitudes condicionales marcando el encabezado de solicitud If-none-match
.
Una buena forma de calcular una etiqueta de entidad depende de tu forma de almacenar archivos. En un sistema de archivos típico de * nix, el valor del inodo es un buen comienzo.
Ejemplo:
fs.stat(filePath, function(err, stats) {
if (err || !stats.isFile()) {
//oops
}
else {
var etag = '"' + stats.ino + '-' + stats.size + '-' + Date.parse(stats.mtime) + '"';
//if etag in header['if-non-match'] => 304
//else serve file with etag
}
});
En casos especiales, incluso puede ser que desee almacenar en caché el etag o incluso el archivo en la memoria y registrar una devolución de llamada fs.watchFile()
con el fin de invalidar la entrada tan pronto como los cambios en los archivos.
Gracias. Pero supongo que algunos navegadores ignoran tal o cual cabecera y no se molestan en buscar 304 si tienen el archivo en su memoria caché. ¿Me estoy perdiendo de algún modo por qué su sugerencia aún resuelve esto? –
Además ... ¿Podría FireFox ser ... umm .. * mintiendo * a mí (a través de firebug)? En su pestaña Net, veo solicitudes que salen para buscar esos archivos estáticos y vuelven con una agradable respuesta http de 200, mientras que en _realidad_ no llegan a mi servidor ni aparecen en Fiddler (solo funcionan con el caché local muy agresivo) - otra vez por favor hazme entender si me estoy perdiendo algo. –
- 1. Técnicas de detección de bordes
- 2. MVC3 técnicas de caché de datos
- 3. Técnicas de Detección de Colisión de Motor de Física Continua
- 4. C++ Técnicas/prácticas de administración de memoria
- 5. Técnicas de detección de ubicación para direcciones IP
- 6. Detección de caché del navegador por jQuery
- 7. Herramientas de detección de fuga de memoria
- 8. Visual C++ - Detección de fugas de memoria
- 9. Detección de fugas de memoria en nodejs
- 10. Caché de consultas de bases de datos con Node.js
- 11. tecnología de memoria caché distribuida
- 12. Diseño de memoria caché LRU
- 13. Control de memoria caché HTML
- 14. Aplicación web Java: ¿cómo implementar técnicas de almacenamiento en caché?
- 15. Android: estrategia de memoria caché de imagen y tamaño de caché de memoria
- 16. limitar el uso de memoria de Node.js
- 17. Compartiendo memoria caché
- 18. UIwebview sin memoria caché
- 19. Borrar la memoria caché de Sitecore para un elemento de la memoria caché mediante programación
- 20. Pérdida de memoria con socket.io + node.js
- 21. Cómo almacenar en caché con el sitio Node.js de manifiesto
- 22. Técnicas para mantener los datos en el caché, localidad?
- 23. Almacenamiento en memoria caché de WebConfigurationManager.AppSettings?
- 24. Caché de memoria o diccionario concurrente?
- 25. Biblioteca de detección automática de fugas de memoria C++
- 26. Perfiles de uso de memoria Perl y detección de fugas?
- 27. Detección de problema de fragmentación de memoria en un proceso
- 28. automatizado de detección de fugas de memoria en Java
- 29. Uso de CppUnit para la detección de fuga de memoria
- 30. G ++ herramienta de detección de fugas de memoria multiplataforma
Logramos esto de la manera más simple: simplemente agregue la marca de tiempo de inicio de la aplicación como cadena de consulta para cada recurso estático. Ejemplo aquí: http://ankitjain.info/ankit/2013/12/05/cache-busting-nodejs-express-jade/ – ankitjaininfo