manifest - example - html5 permite el uso de las webs offline
Mi manifiesto de caché de aplicaciones HTML5 está almacenando en caché todo (3)
Aquí hay un truco que descubrí jugando:
No he encontrado la respuesta definitiva, pero por lo que he aprendido, parece que el manifiesto no está destinado a establecerse en cada página. De nuevo, no estoy seguro, pero este es un truco que encontré. Tengo una página como manifest.html que tiene el
<html manifest="manifest.appcache">
Aprendí que las páginas que no tienen esto no se agregarán a la memoria caché, sin embargo, continuarán usando la memoria caché de la aplicación si están en el mismo dominio. Por lo tanto, si incluye manifest.html una página html simple que tiene esto en un iframe en cada página, no guardará en caché esa página, ya que Chrome ya no dará como resultado:
Adding master entry to Application Cache with manifest
pero si vas a la pestaña de red, verás que está usando el caché
<iframe id=''manifest_iframe_hack''
style=''display: none;''
src=''temporary_manifest_hack.html''>
</iframe>
contenido de temporary_manifest_hack.html:
<!DOCTYPE HTML>
<html lang="en" class="no-js" manifest="manifest.appcache">
<head>
<meta charset="utf-8">
<title>Hack 4 Manifest</title>
</head>
<body></body>
</html>
ACTUALIZAR:
** Publiqué esta pregunta cuando esta característica era realmente nueva, ahora me doy cuenta de que esta característica no se debe usar de esta manera a menos que se use a través de JavaScript. pero parece que este hack es una gran solución para la mayoría de los principiantes que cometen el mismo error y mal uso de esta función. Si desea almacenar en caché todo, excepto su HTML, debe hacerlo con JS o puede utilizar la solución a continuación **
Supongo que mi pregunta se reduce a esto: si el archivo que hace referencia al manifiesto usando el atributo manifesto de la etiqueta HTML cae bajo las entradas MASTER CACHE, ¿cómo podría tener una página dinámica? Use el manifiesto.
Mi archivo se ve así:
CACHE MANIFEST
CACHE:
# IMAGES:
/stylesheets/bg.jpg
/stylesheets/cont_bg.png
#and so forth..
#EXTERNAL
http://chat.mydomain.com/themes/images/panel_bg.png
http://chat.mydomain.com/themes/images/images_core.png
####################################
#STYLE SHEETS:
/stylesheets/min.css
/stylesheets/css_night.aspx
#####################################
#JAVASCRIPT:
/JAVASCRIPT/header_javascript.js
#EXTERNAL:
http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
FALLBACK:
/ /offline.php
NETWORK:
*
Ahora el problema es que una vez que navego por una página que no está en el manifiesto, mis archivos php dinámicos reales como index.php, cuando veo la página por primera vez y no aparece en la memoria caché, aparece:
Adding master entry to Application Cache with manifest http://208.109.248.197/manifest.appcache
Application Cache Downloading event
Application Cache Progress event (0 of 28)
...
Application Cache Progress event (28 of 28)
Application Cache NoUpdate event
Hasta ahora todo va bien hasta que cargue una página, y Chrome dice:
Application Cache UpdateReady event
Adding master entry to Application Cache with manifest http://mydomain.com/manifest.appcache
ahora, como puede ver en la última línea, agrega index.php a mi caché de aplicaciones y lo he verificado yendo a url: chrome://appcache-internals/
Dice:
Flags URL Size (headers and data)
Explicit, http://mydomain/JAVASCRIPT/header_javascript.js 57.5 kB
Master, http://mydomain/home.php 51.2 kB
Master, http://mydomain/index.php 53.5 kB
Master, Fallback, http://mydomain/offline.php 49.4 kB
donde cosas como index.php y home.php no se deben almacenar en caché. Me gustaría decir que no guarde en caché ninguna extensión html si es posible. Pero esto es lo que he aprendido de varios RFC que creo: un comodín en blanco de la lista desplegable, que está abierto o bloqueado.
The open state indicates that any URL not listed as cached is to be implicitly treated as being in the online whitelist namespaces; the blocking state indicates that URLs not listed explicitly in the manifest are to be treated as unavailable.
bueno, me gustaría utilizar uno de estos indicadores de comodines de lista blanca en línea y configurarlo para el bloqueo, pero no puedo encontrar explicaciones o ejemplos más. También leo:
zero or more URLs that form the online whitelist namespaces.
These are used as prefix match patterns, and declare URLs for which the user agent will ignore the application cache, instead fetching them normally (i.e. from the network or locale HTTP cache as appropriate).
También me gustaría utilizar un patrón como este pero, una vez más, no puedo encontrar documentación. ¿Por qué no hay ningún signo de documentación de manifiesto de aplicación y ningún otro sitio web en el que haya estado lo está usando, ya que mi directorio de aplicaciones de Chrome no muestra ninguno?!?
¡Gracias por tu tiempo!
La aplicación siempre contiene la página que contiene el atributo de manifiesto en la etiqueta html.
Si desea que esa página sea dinámica, debe cargar contenido en ella con una llamada ajax a un servicio que se encuentre en la sección RED.
Supongo que el iframe-workaround no funciona. Si crees que los archivos están en reposo desde la aplicación: no. vienen de la caché del navegador.
desactivar browsercache en devtools-settings y mirar "red". Puede ver que todos los elementos se cargarán a través de la red y que no provienen de la caché (de la aplicación).