que por empieza con comodin comienza comience html5 caching manifest offline-caching offlineapps

html5 - por - selector comienza con



¿Cómo especifico un comodín en el manifiesto de caché HTML5 para cargar todas las imágenes en un directorio? (5)

El manifiesto de caché ahora está en desuso y debe usar encabezados HTML para controlar el almacenamiento en caché.

Por ejemplo:

<meta http-equiv="Cache-control" content="public">

  • Público: se puede almacenar en caché en cachés públicos compartidos.
  • Privado: solo se puede almacenar en la memoria caché privada.
  • No-Cache: no se puede almacenar en caché.
  • No-Store: puede almacenarse en caché pero no archivarse.

Tengo muchas imágenes en una carpeta que se usan en la aplicación. Al usar el manifiesto de caché, sería más fácil para el mantenimiento si pudiera especificar un comodín para cargar todas las imágenes o archivos en un determinado directorio para que se almacenen en caché.

P.ej

CACHE MANIFEST # 2011-11-3-v0.1.8 #-------------------------------- # Pages #-------------------------------- ../index.html ../edit.html #-------------------------------- # JavaScript #-------------------------------- ../js/jquery.js ../js/main.js #-------------------------------- # Images #-------------------------------- ../img/*.png

Se puede hacer esto? Lo he intentado en algunos navegadores con ../img/* también, pero parece que no funciona.


No creo que funcione de esa manera. Tendrá que especificar todas las imágenes una a una, o tener un simple script PHP para recorrer el directorio y sacar el archivo (con el encabezado correcto de text/cache-manifest por supuesto).


Sería más fácil, pero ¿cómo va a funcionar? El archivo de manifiesto es algo que se analiza y se actúa en el navegador, que no tiene un conocimiento especial de los archivos en su servidor que no sean los que le ha indicado. Si el navegador ve esto:

../img/*.png

¿Cuál es la primera imagen que el navegador debe solicitar al servidor? Comencemos con estos:

../img/1.png ../img/2.png ../img/3.png ../img/4.png ... ../img/2147483647.png

Esas son todas las imágenes que pueden existir con un nombre numérico, deteniéndose semi-arbitrariamente en 231-1 . ¿Cuántos de esos 2 mil millones de archivos existen en su directorio img ? ¿Realmente desea que un navegador haga todas esas solicitudes solo para obtener 2 billones 404? Para completar, el navegador probablemente también quiera solicitar todos los equivalentes llenos a cero:

../img/01.png ../img/02.png ../img/03.png ../img/04.png ... ../img/001.png ../img/002.png ../img/003.png ../img/004.png ... ../img/0001.png ../img/0002.png ../img/0003.png ../img/0004.png ...

Ahora el navegador ha realizado más de 4 mil millones de solicitudes HTTP para archivos que en su mayoría no están allí, y aún no ha llegado a las letras ni a los signos de puntuación al construir los posibles nombres de archivos que podrían existir en el servidor. Esta no es una forma factible de que el archivo de manifiesto funcione. El servidor es donde se conocen los archivos en el directorio img , por lo que es en el servidor donde debe compilarse la lista de archivos.


Sería un gran problema de seguridad si los navegadores pudieran solicitar listas de carpetas, es por eso que Tomcat desactiva esa capacidad por defecto ahora.

Sin embargo, el navegador podría ubicar todas las coincidencias con los comodines a los que hacen referencia las páginas que almacena en caché. Este enfoque seguiría siendo problemático (como, ¿qué pasa con las imágenes que no se usaron inicialmente sino que se configuraron dinámicamente mediante JavaScript, etc., y requeriría que todos los elementos almacenados en la memoria caché no solo se descargaran sino que se analizaran también).


Si está intentando automatizar este proceso, en lugar de hacerlo manualmente. Use un script, o como yo uso el manifestR . Emitirá su archivo manifest / appcache y todo lo que tiene que hacer es copiar y pegar. Lo he usado con éxito y generalmente solo tengo que hacer algunos cambios.

Además, recomiendo usar el encabezado de red con el comodín:

NETWORK: *

Esto permite que todos los activos de otros dominios vinculados a través de JSON, por ejemplo, se descarguen en el caché. Creo que este es el único encabezado donde puedes especificar un comodín. Como los otros han dicho aquí, es por razones de seguridad.