mozilla

Comparar revisiones

Usando caché de aplicaciones

Change Revisions

Revisión 287928:

Revisión 287928 de hugohabel el

Revisión 348045:

Revisión 348045 de MPoli el

Título:
Recursos en modo sin conexión en Firefox
Recursos en modo sin conexión en Firefox
Enlace amigable (slug):
Recursos_offline_en_firefox
Recursos_offline_en_firefox
Etiquetas:
"Firefox 3.5", HTML5, para_revisar, "aplicaciones web sin conexión"
"Firefox 3.5", "aplicaciones web sin conexión", "HTML5", "para_revisar"
Contenido:

Revisión 287928
Revisión 348045
n7    <p>n7    <h2 id="Introduction">
8      {{ gecko_minversion_header("1.9.1") }}8      Introducción
9    </p>
10    <p>
11      Firefox 3.5 admite la especificación HTML 5 para el almacen
>amiento en caché sin conexión de los recursos de aplicaciones web 
>; esto se realiza a través de la <em>caché de aplicación</em>: un 
>a colección de recursos que se obtienen de un <strong>manifiesto  
>de recursos</strong> que proporciona la aplicación web. 
12    </p>
13    <p>
14      {{ fx_minversion_note(3, "Partes de esta especificación fue
>ron soportadas por Firefox 3, sin embargo, la especificación ha c 
>ambiado desde que Firefox 3 fue lanzado, por lo tanto, no se espe 
>cifíca en esta guía cómo dar soporte a Firefox 3.") }} 
15    </p>
16    <h2 id="Terminolog.C3.ADa">
17      Terminología
n20      Esta sección define algunos términos que resultarán útiles n11      <a href="https://developer.mozilla.org/en-US/docs/HTML/HTML
>para la lectura de esta documentación.>5" title="/en-US/docs/HTML/HTML5">HTML5</a> proporciona un mecani
 >smo de <em>caché de aplicación</em> que permite que las aplicacio
 >nes basadas en la web se ejecuten sin conexión. Los desarrollador
 >es pueden usar la interface de <strong>Caché de apliaciones</stro
 >ng> (<em>AppCache</em>) para especificar los recursos que el nave
 >gador debería guardar en caché y tener disponibles para los usuar
 >ios cuando no estén conectados. Las aplicaciones que están en cac
 >hé se cargan y funcionan correctamente aunque los usuarios hagan 
 >clic en el botón recargar cuando no están conectados.
21    </p>
22    <dl>
23      <dt>
24        manifiesto de la caché
25      </dt>
26      <dd>
27        Un manifiesto de la caché es un archivo que describe los 
>recursos que se deberían almacenar en la caché para usarlos cuand 
>o se está desconectado. 
28      </dd>
29    </dl>
30    <dl>
31      <dt>
32        Id. del cliente
33      </dt>
34      <dd>
35        El id. del cliente es un identificador único del cliente 
>usado por la interfaz {{ interface("nsICacheService") }} cuando g 
>estiona la caché de aplicación. Es una cadena opaca y se origina  
>cuando se crea una nueva caché de aplicación. 
36      </dd>
37      <dt>
38        grupo de cachés
39      </dt>
40      <dd>
41        Un grupo de cachés es un conjunto con las distintas versi
>ones de una caché para el mismo manifiesto de la caché. 
42      </dd>
43      <dt>
44        Id. de grupo
45      </dt>
46      <dd>
47        La id. de grupo es el URI de un archivo de manifiesto de 
>la caché. Todas las cachés que comparten el mismo manifiesto está 
>n en el mismo grupo de cachés de aplicación. 
48      </dd>
49    </dl>
50    <h2 id="La_cach.C3.A9_de_aplicaci.C3.B3n">
51      La caché de aplicación
52    </h2>
53    <p>12    </p>
54      Cada manifiesto de recursos de aplicaciones web posee su pr
>opia caché de aplicación. Puesto que las aplicaciones pueden comp 
>artir recursos (e incluso el mismo URI del manifiesto), cada cach 
>é de aplicación tiene una copia independiente de cada recurso com 
>partido. Estas cachés están versionadas, de forma que cada vez qu 
>e se visita el sitio mientras se está conectado, una nueva versió 
>n de la aplicación se sincroniza con la caché de aplicación. Esta 
> nueva versión se usará la próxima vez que se visite el sitio. 
55    </p>13    <p>
14      Usar el caché de aplicaciones le da a la aplicación los sig
 >uientes beneficios:
15    </p>
16    <ul>
17      <li>Navegación sin conexión: los usuarios pueden navegar un
 > sitio aún cuando no estén conectados.
18      </li>
19      <li>Velocidad: los recursos en caché son locales, y por lo 
 >tanto, se cargan más rápido.
20      </li>
21      <li>Carga al servidor reducida: el navegador solamente desc
 >arga desde el servidor recursos que han cambiado..
22      </li>
23    </ul>
56    <h3 id=".C2.BFC.C3.B3mo_funciona_la_cach.C3.A9_de_aplicaci.C324    <h3 id=".C2.BFC.C3.B3mo_funciona_la_cach.C3.A9_de_aplicaci.C3
>.B3n?">>.B3n.3F">
57      ¿Cómo funciona la caché de aplicación?25      ¿Cómo funciona el caché de aplicaciones?
n59    <p>n27    <h3 id="Enabling_the_application_cache">
60      La caché de aplicación modifica el proceso de carga de un d28      Habilitando caché de apliaciones
>ocumento; los elementos de la caché de aplicación se cargan ahora 
> directamente de la caché, sin tener acceso a la red (salvo para  
>actualizar la copia de la aplicación web en la caché; se hace en  
>segundo plano y no afecta al rendimiento de manera significativa) 
>. 
61    </p>
62    <p>
63      Las cachés de aplicación también pueden volverse obsoletas.
> Si el manifiesto se elimina del servidor, Firefox elimina todas  
>las cachés de aplicación que use ese manifiesto, a continuación e 
>nvía un evento "obsoleto" al objeto de la caché de aplicación. A  
>continuación el estado de la caché de aplicación pasa a <code>OBS 
>OLETO</code>. 
64    </p>
65    <h4 id="Ejemplo_de_flujo_de_trabajo">
66      Ejemplo de flujo de trabajo
67    </h4>
68    <p>
69      Esta sección ofrece un ejemplo del flujo de trabajo relacio
>nado con el funcionamiento de la caché al cargar una página. Si e 
>res un usuario final del mecanismo de almacenamiento en caché, la 
> verdad es que no necesitas saber esto, pero resulta útil si está 
>s desarrollando Firefox o incrustando Gecko. 
70    </p>
71    <p>
72      Supongamos que tienes un manifiesto de la caché ubicado en 
><a class=" external" href="http://www.foo.com/cache.manifest" rel 
>="freelink">http://www.foo.com/cache.manifest</a>, que incluye do 
>s recursos <code>test.html</code> y <code>test.png</code>. Al car 
>gar <code>test.html</code> se siguen los siguientes pasos: 
73    </p>
74    <p>
75      El canal HTTP llama al método {{ interface("nsIApplicationC
>acheService") }} {{ ifmethod("nsIApplicationCacheService", "choos 
>eApplicationCache") }} para seleccionar la id. de grupo apropiada 
> para el recurso solicitado: 
76    </p>
77    <pre>
78appCache = nsIApplicationCacheService::ChooseApplicationCache("ht
>tp://www.foo.com/test.html"); 
79</pre>
80    <p>
81      Este devuelve la caché de aplicación más reciente identific
>ada por la id. de grupo "<a class=" external" href="http://www.fo 
>o.com/cache.manifest" rel="freelink">http://www.foo.com/cache.man 
>ifest</a>". A continuación el canal HTTP realiza algo parecido a  
>lo siguiente: 
82    </p>
83    <pre>
84cacheSession = nsICacheSerivce::CreateSession(appCache.clientID, 
>STORAGE_OFFLINE, true); 
85cacheEntry = cacheSession.openCacheEntry("http://www.foo.com/test
>.html"); 
86</pre>
87    <p>
88      Esto crea una sesión de caché y abre el recurso solicitado 
>desde el interior de la caché. A partir de aquí carga los datos d 
>esde la <code>cacheEntry</code>, pero sin validarlos. 
89    </p>
90    <p>
91      Cuando se esté cargando <code>test.html</code>, el docshell
> les indica a las cargas secundarias que usen la misma caché de a 
>plicación que encontró la llamada a <code>chooseApplicationCache( 
>)</code>, de forma que ningún recurso que haya cargado <code>test 
>.html</code> se cargue también desde la misma caché. 
92    </p>
93    <h3 id="Estados_de_la_cach.C3.A9_de_aplicaci.C3.B3n">
94      Estados de la caché de aplicación
n97      Cada caché de aplicación tiene un <strong>estado</strong> qn31      Para habilitar el caché de apliaciones, debe incluir el atr
>ue indica la condición actual de la caché. Las cachés que compart>ibuto {{htmlattrxref("manifest", "html")}} en el elemento {{HTMLE
>en el mismo URI de manifiesto comparten también el mismo estado d>lement("html")}} en las páginas de sus aplicaciones, como se mues
>e la caché, que puede ser uno de los siguientes:>tra en el siguiente ejemplo:
98    </p>
99    <dl>
100      <dt>
101        <code>UNCACHED</code>
102      </dt>
103      <dd>
104        Un valor especial que indica que un objeto de la caché de
> aplicación no está inicializado por completo. 
105      </dd>
106      <dt>
107        <code>IDLE</code>
108      </dt>
109      <dd>
110        La caché de aplicación no se encuentra actualmente en el 
>proceso de actualización. 
111      </dd>
112      <dt>
113        <code>CHECKING</code>
114      </dt>
115      <dd>
116        El manifiesto se está capturando y comprobando en busca d
>e actualizaciones. 
117      </dd>
118      <dt>
119        <code>DOWNLOADING</code>
120      </dt>
121      <dd>
122        Se están descargando recursos para añadirse a la caché de
>bido a que se ha cambiado un manifiesto de recursos. 
123      </dd>
124      <dt>
125        <code>UPDATEREADY</code>
126      </dt>
127      <dd>
128        Hay disponible una nueva versión de la caché de aplicació
>n. Hay un evento <code>updateready</code> correspondiente, que se 
> dispara en lugar del evento <code>cached</code> cuando se ha des 
>cargado una nueva actualización pero aún no se ha activado median 
>te el método <code>swapCache()</code>. 
129      </dd>
130      <dt>
131        <code>OBSOLETE</code>
132      </dt>
133      <dd>
134        El grupo de cachés de aplicación está ya obsoleto.
135      </dd>
136    </dl>
137    <h3 id="Recursos_en_la_cach.C3.A9_de_aplicaci.C3.B3n">
138      Recursos en la caché de aplicación
139    </h3>
140    <p>32    </p>
141      La caché siempre incluye al menos un recurso, identificado 
>por el URI. Todos los recursos se ajustan a una de las siguientes 
> categorías: 
142    </p>
143    <dl>
144      <dt>
145        Entradas maestras
146      </dt>
147      <dd>
148        Son recursos que se han añadido a la caché porque un cont
>exto de navegación que visitó el usuario incluyó un documento que 
> indicaba que estaba en esta caché usando su atributo <code>manif 
>est</code>. 
149      </dd>
150      <dt>
151        El manifiesto
152      </dt>
153      <dd>
154        Es el propio manifiesto de recursos, cargado desde el URI
> especificado en el atributo <code>manifest</code> del elemento < 
>code>html</code> de una entrada implícita. El manifiesto se desca 
>rga y procesa durante el proceso de actualización de la caché de  
>aplicación. Las entradas implícitas deben tener el mismo esquema, 
> host y puerto que el manifiesto. 
155      </dd>
156      <dt>
157        Entradas explícitas
158      </dt>
159      <dd>
160        Son recursos listados en el manifiesto de la caché.
161      </dd>
162      <dt>
163        Entradas de reserva
164      </dt>
165      <dd>
166        Son recursos que se listaron en el manifiesto de la caché
> como entradas de reserva. {{ fx_minversion_inline(3.5) }} 
167      </dd>
168    </dl>
169    <div class="note">
170      <strong>Nota:</strong> los recursos pueden etiquetarse con 
>múltiples categorías y, por lo tanto, pueden categorizarse como e 
>ntradas múltiples. Por ejemplo, una entrada puede ser a la vez un 
>a entrada explícita y una entrada de reserva. 
171    </div>33    <div>
172    <h4 id="Entradas_maestras">34      <pre class="brush: html">
173      Entradas maestras35<span class="brush: html">&lt;html manifest="ejemplo.appcache"&gt
 >; </span>
174    </h4>36  ...
175    <p>
176      Las entradas maestras son cualquier archivo HTML que incluy
>a una atributo {{ htmlattrxref("manifest","html") }} en su elemen 
>to {{ HTMLElement("html") }}. Por ejemplo, supongamos que tenemos 
> el archivo HTML <code><a class="linkification-ext external" href 
>="http://www.foo.bar/entry.html" title="Vinculación: http://www.f 
>oo.bar/entry.html">http://www.foo.bar/entry.html</a></code>, que  
>tiene este aspecto: 
177    </p>
178    <pre>
179;html manifest="foo.manifest"&gt;
180&lt;h1&gt;Entry&lt;/h1&gt;
n183    <p>n39    </div>
184      Si <code>entry.html</code> no está incluido en el manifiest
>o, la visita a la página <code>entry.html</code> provocará que <c 
>ode>entry.html</code> se añada a la caché de aplicación como entr 
>ada maestra. 
185    </p>40    <p>
186    <h4 id="Entradas_de_reserva">41      El atributo manifest referencua un archivo <strong>manifies
 >to de cache</strong>, que es un archivo de texto que lista los re
 >cursos (archivos) que el navegador deberá guardar en caché para l
 >a aplicación.
187      Entradas de reserva
188    </h4>
189    <p>42    </p>
190      Las entradas de reserva se usan cuando falla un intento de 
>cargar un recurso. Por ejemplo, imagínate que hay un manifiesto d 
>e la caché ubicado en <code><a class=" external" href="http://www 
>.foo.bar/test.manifest" rel="freelink">http://www.foo.bar/test.ma 
>nifest</a></code> con los siguientes contenidos: 
191    </p>43    <p>
44      Debería incluir el atributo <code>manifest</code> en cada p
 >ágina de la aplicación que quiera guardar en caché. El navegador 
 >no guardará páginas que no contengan el atributo&nbsp; <code>mani
 >fest</code>, a menos que esas páginas estén específicamente lista
 >das en el archivo de manifiesto en sí mismo. No es necesario list
 >ar todas las páginas que se quieran guardar en caché en el archiv
 >o de manfifesto, el navegador implícitamente agrega cada página q
 >ue el usuario visite y tenga el atributo <code>manifest</code> es
 >tablecido para caché de aplicación.
45    </p>
192    <pre>46    <p>
47      Algunos navegadores (ej. Firefox) muestran una notificación
 > la primera vez que un usuario carga una aplicación que usa caché
 > de aplicaciones La barra de notificaciones muestra un mensaje pa
 >recido a :
48    </p>
49    <p style="margin-left: 40px;">
50      Este sitio web (<code>www.ejemplo.com</code>) está pidiendo
 > guardar datos en su equpo para suar sin conexión. [Permitir] [Nu
 >nca para este sitio] [No por ahora]
51    </p>
52    <p>
53      El término "offline(-enabled) applications" a veces se refi
 >ere específicamente a aplicaciones a las que el usuario ha permit
 >ido que usen capacidades sin conexión.
54    </p>
55    <h3 id="Loading_documents">
56      Cargando documentos
57    </h3>
58    <div>
59      <p>
60        Es uso de caché de aplicaciones modifica el proceso norma
 >l de la carga de un documento:
61      </p>
62      <ul>
63        <li>Si existe caché de aplicaciones, el navegador carga e
 >l documento y sus recursos asociados directamente desde ahí, sin 
 >acceder a la red. Esto acelera el tiempo de carga del documento.
64        </li>
65        <li>El navegador entonces verifica si hubo actualizacione
 >s al manifiesto de caché en el servidor.
66        </li>
67        <li>Si el manifiesto de caché fue actualizado, el navegad
 >or descarga la nueva versión del archivo y de los recursos listad
 >os en él. Esto se realiza en segundo plano y no afecta el rendimi
 >ento de forma significativa.
68        </li>
69      </ul>
70      <p>
71        El proceso para cargar documentos y actualizar el caché d
 >e aplicaciones está especificado con gran detalle aquí debajo:
72      </p>
73    </div>
74    <ol>
75      <li>Cuando el navegador visita un documento que incluye el 
 >atributo <code>manifest</code>, si no existe caché de apliaciones
 >, el navegador carga el documento y baja todas las entradas lista
 >das en el archivo de manifiesto, creando la primera versón de cac
 >hé de aplicaciones.&nbsp;
76      </li>
77      <li>Posteriores visitas a ese documento causan que el naveg
 >ador cargue el documento y otros archivos especificados en el man
 >ifiesto desde el caché de aplicaciones (no desde el servidor).&nb
 >sp; Además, el navegador envía un evento <code>checking</code> al
 > objeto <code><a href="https://developer.mozilla.org/en/DOM/windo
 >w.applicationCache" title="en/DOM/window.applicationCache">window
 >.applicationCache</a></code> y descarga el archivo de manifiesto,
 > siguiendo las reglas de caché HTTP apropiadas.
78      </li>
79      <li>Si la copia del manifiesto actualmente en caché está ac
 >tualizada, el navegador envía un evento <code>noupdate</code> al 
 >objeto <code>applicationCache</code> y el proceso de actualizació
 >n está completo. Hay que tener en cuenta que si se cambia en el s
 >ervidor cualquier recurso en caché, se deberá cambiar también el 
 >archivo de manifiesto, para que el navegador sepa que deberá desc
 >argar los recursos nuevamente.
80      </li>
81      <li>Si el archivo de manifiesto <em>ha</em> cambiado, todos
 > los archivos listados en el manifiesto—así como los que se agreg
 >aron al caché llamando <code><a href="https://developer.mozilla.o
 >rg/en/nsIDOMOfflineResourceList#add.28.29" title="en/nsIDOMOfflin
 >eResourceList#add.28.29">applicationCache.add()</a></code>—se des
 >cargarán en un caché temporario, siguiendo las reglas de caché&nb
 >sp; HTTP apropiadas. Para cada archivo descargado en este caché t
 >emporario, el navegador envía un evento <code>progress</code> al 
 >objeto <code>applicationCache</code>. Si ocurre cualquier error, 
 >el navegador envía un evento <code>error</code> y la actualizació
 >n se detiene.
82      </li>
83      <li>Una vez que todos los archivos han sido recuperados exi
 >tosamente, son movidos al caché sin conexión real automáticamente
 > y un evento <code>cached</code> es enviado al objeto <code>appli
 >cationCache</code>. Como el documento ya ha sido cargado en el na
 >vegador desde caché, la actualización no se mostrará hasta que el
 > documento sea recargado (ya sea manualmente o por programa).
84      </li>
85    </ol>
86    <h2 id="Storage_location_and_clearing_the_offline_cache">
87      Ubicación del almacenamiento y limpiando el caché sin conex
 >ión
88    </h2>
89    <p>
90      En Chrome se puede limpiar el caché sin conexión selecciona
 >ndo "Clear browsing data..." en las preferencias o visitando <a c
 >lass="external" title="chrome://appcache-internals/">chrome://app
 >cache-internals/</a>. Safari tiene una configuración similar"Vaci
 >ar cache" en sus preferencias, pero se requiere el reinicio del n
 >avegador.
91    </p>
92    <p>
93      En Firefox, el caché sin conexión se guarda en un lugar sep
 >arado del perfil de Firefox profile—cerca del caché de disco regu
 >lar:
94    </p>
95    <ul>
96      <li>Windows Vista/7: <code>C:\Users\&lt;username&gt;\AppDat
 >a\<strong>Local</strong>\Mozilla\Firefox\Profiles\&lt;salt&gt;.&l
 >t;profile name&gt;\OfflineCache</code>
97      </li>
98      <li>Mac/Linux:&nbsp;<code>/Users/&lt;username&gt;/Library/C
 >aches/Firefox/Profiles/&lt;salt&gt;.&lt;profile name&gt;/OfflineC
 >ache</code>
99      </li>
100    </ul>
101    <p>
102      In Firefox the current status of the offline cache can be i
 >nspected on the <code>about:cache</code> page (under the "Offline
 > cache device" heading). The offline cache can be cleared for eac
 >h site separately using the "Remove..." button in Tools -&gt; Opt
 >ions -&gt; Advanced -&gt; Network -&gt; Offline data.
103    </p>
104    <p>
105      Prior to Firefox 11, neither Tools -&gt; Clear Recent Histo
 >ry nor Tools -&gt; Options -&gt; Advanced -&gt; Network -&gt; Off
 >line data -&gt; Clear Now cleared the offline cache. This has bee
 >n fixed.
106    </p>
107    <p>
108      See also <a href="https://developer.mozilla.org/en/DOM/Stor
 >age#Storage_location_and_clearing_the_data" title="en/DOM/Storage
 >#Storage location and clearing the data">clearing the DOM&nbsp;St
 >orage data</a>.
109    </p>
110    <div>
111      <p>
112        Application caches can also become obsolete. If an applic
 >ation's manifest file is removed from the server, the browser rem
 >oves all application caches that use that manifest, and sends an 
 >"obsoleted" event to the&nbsp;<code>applicationCache</code>&nbsp;
 >object. This sets the application cache's state to&nbsp;<code>OBS
 >OLETE</code>.
113      </p>
114    </div>
115    <h2 id="The_cache_manifest_file">
116      The cache manifest file
117    </h2>
118    <h3 id="Referencing_a.C2.A0cache_manifest_file">
119      Referencing a&nbsp;cache manifest file
120    </h3>
121    <p>
122      The&nbsp;<code>manifest</code>&nbsp;attribute in a web appl
 >ication can specify either the relative path of a cache manifest 
 >file or&nbsp;an absolute URL. (Absolute URLs must be from the sam
 >e origin as the application). A cache manifest file can have any 
 >file extension, but it must be served with the MIME type&nbsp;<co
 >de>text/cache-manifest</code>.
123    </p>
124    <div class="note">
125      <strong>Note:</strong> On Apache servers, the MIME type for
 > manifest (.appcache) files can be set by adding <code>AddType te
 >xt/cache-manifest .appcache</code> to a .htaccess file within eit
 >her the root directory, or the same directory as the application.
126    </div>
127    <h3 id="Entries_in_a.C2.A0cache_manifest_file">
128      Entries in a&nbsp;cache manifest file
129    </h3>
130    <p>
131      The cache manifest file is a simple text file that lists th
 >e resources the browser should cache for offline access. Resource
 >s are identified by URI. Entries listed in the cache manifest&nbs
 >p;must have the same scheme, host, and port as the manifest.&nbsp
 >;
132    </p>
133    <h3 id="Example_1.3A_a_simple_cache_manifest_file">
134      Example 1: a simple cache manifest file
135    </h3>
136    <div>
137      <p>
138        The following is a simple cache manifest file,&nbsp;<code
 >>example.appcache</code>, for an imaginary web site at&nbsp;<span
 > class="nowiki">www.example.com</span>.
139      </p>
140      <pre class="eval">
nn142# v1 - 2011-08-13
143# This is a comment.
144<span class="nowiki">http://www.example.com/index.html</span>
145<span class="nowiki">http://www.example.com/header.png</span>
146<span class="nowiki">http://www.example.com/blah/blah</span>
147</pre>
148      <p>
149        A cache manifest file can include three sections (<code>C
 >ACHE</code>,&nbsp;<code>NETWORK</code>, and&nbsp;<code>FALLBACK</
 >code>, discussed below). In the example above, there is no sectio
 >n header, so all data lines are assumed to be in the explicit (<c
 >ode>CACHE</code>) section, meaning that the browser should cache 
 >all the listed resources in the application cache. Resources can 
 >be specified using either absolute or relative URLs (e.g.,&nbsp;<
 >code>index.html</code>).
150      </p>
151      <p>
152        The "v1" comment in the example above is there for a good
 > reason. Browsers only update an application cache when the manif
 >est file changes, byte for byte. If you change a cached resource 
 >(for example, you update the&nbsp;<code>header.png</code>&nbsp;im
 >age with new content), you must also change the content of the ma
 >nifest file in order to let browsers know that they need to refre
 >sh the cache. You can make any change you want to the manifest fi
 >le, but revising a version number is the recommended best practic
 >e.
153      </p>
154      <div class="warning">
155        <strong>Important:</strong>&nbsp;Do not specify the manif
 >est itself in the cache manifest file, otherwise it will be nearl
 >y impossible to inform the browser a new manifest is available.
156      </div>
157      <h3 id="Sections_in_a_cache_manifest_file.3A.C2.A0CACHE.2C.
 >C2.A0NETWORK.2C_and.C2.A0FALLBACK">
158        Sections in a cache manifest file:&nbsp;<code>CACHE</code
 >>,&nbsp;<code>NETWORK</code>, and&nbsp;<code>FALLBACK</code>
159      </h3>
160      <p>
161        A manifest can have three distinct sections:&nbsp;<code>C
 >ACHE</code>,&nbsp;<code>NETWORK</code>, and&nbsp;<code>FALLBACK</
 >code>.
162      </p>
163      <dl>
164        <dt>
165          <code>CACHE:</code>
166        </dt>
167        <dd>
168          This is the default section for entries in a cache mani
 >fest file. Files listed under the&nbsp;<code>CACHE:</code>&nbsp;s
 >ection header (or immediately after the&nbsp;<code>CACHE MANIFEST
 ></code>&nbsp;line) are explicitly cached after they're downloaded
 > for the first time.
169        </dd>
170        <dt>
171          <code>NETWORK:</code>
172        </dt>
173        <dd>
174          Files listed under the&nbsp;<code>NETWORK:</code>&nbsp;
 >section header in the cache manifest file are white-listed resour
 >ces that require a connection to the server. All requests to such
 > resources bypass the cache, even if the user is offline. Wildcar
 >ds may be used.
175        </dd>
176        <dt>
177          <code>FALLBACK:</code>
178        </dt>
179        <dd>
180          The&nbsp;<code>FALLBACK:</code>&nbsp;section specifies 
 >fallback pages the browser should use if a resource is inaccessib
 >le. Each entry in this section lists two URIs—the first is the re
 >source, the second is the fallback. Both URIs must be relative an
 >d from the same origin as the manifest file. Wildcards may be use
 >d.
181        </dd>
182      </dl>
183      <p>
184        The&nbsp;<code>CACHE</code>,&nbsp;<code>NETWORK</code>, a
 >nd&nbsp;<code>FALLBACK&nbsp;</code>sections can be listed in any 
 >order in a cache manifest file, and each section can appear more 
 >than once in a single manifest.
185      </p>
186      <h3 id="Example_2.3A_a_more_complete_cache_manifest_file">
187        Example 2: a more complete cache manifest file
188      </h3>
189      <p>
190        The following is a more complete cache manifest file for 
 >the imaginary web site at&nbsp;<span class="nowiki">www.example.c
 >om</span>:
191      </p>
192      <pre class="eval">
193CACHE MANIFEST
194# v1 2011-08-14
195# This is another comment
196index.html
197cache.html
198style.css
199image1.png
200 
201# Use from network if available
202NETWORK:
203network.html
204 
205# Fallback content
n195foo/bar/ foo.htmln207/ fallback.html
n197    <p>n209      <p>
198      Cualquier solicitud a <code><a class=" external" href="http210        This example uses&nbsp;<code>NETWORK</code>&nbsp;and&nbsp
>://www.foo.bar/foo/bar/" rel="freelink">http://www.foo.bar/foo/ba>;<code>FALLBACK</code>&nbsp;sections to specify that the&nbsp;<co
>r/</a></code> o sus subdirectorios y contenidos provocará que una>de>network.html</code>&nbsp;page must always be retrieved from th
> solicitud de red intente cargar el recurso solicitado. Si el int>e network, and that the&nbsp;<code>fallback.html</code>&nbsp;page
>ento fracasa, debido a un fallo en la red o a algún error del ser> should be served as a fallback resource (e.g., in case a connect
>vidor, se cargará en su lugar los contenidos del archivo <code>fo>ion to the server cannot be established).
>o.html</code>. 
199    </p>211      </p>
200    <h4 id="La_lista_blanca_en_l.C3.ADnea">212      <h3 id="Structure_of_a_cache_manifest_file">
201      La lista blanca en línea213        Structure of a cache manifest file
202    </h4>214      </h3>
203    <p>215      <p>
204      La lista blanca en línea puede contener cero o más URI de l216        Cache manifest files must be served with the&nbsp;<code>t
>os recursos que la aplicación web necesitará para tener acceso si>ext/cache-manifest</code>&nbsp;MIME type. All resources served us
>n conexión al servidor en vez de a la caché. Esto permite que el >ing this MIME type must follow the syntax for an application cach
>modelo de seguridad del navegador proteja al usuario frente a pot>e manifest, as defined in this section.
>enciales infracciones de seguridad limitando el acceso solo a los 
> recursos aprobados. 
205    </p>217      </p>
218      <p>
219        Cache manifests are UTF-8 format text files, and may opti
 >onally include a BOM character. Newlines may be represented by li
 >ne feed (<code>U+000A</code>), carriage return (<code>U+000D</cod
 >e>), or carriage return and line feed both.
220      </p>
221      <p>
222        The first line of the cache manifest must consist of the 
 >string&nbsp;<code>CACHE MANIFEST</code>&nbsp;(with a single&nbsp;
 ><code>U+0020</code>&nbsp;space between the two words), followed b
 >y zero or more space or tab characters. Any other text on the lin
 >e is ignored.
223      </p>
224      <p>
225        The remainder of the cache manifest must be comprised of 
 >zero or more of the following lines:
226      </p>
227      <dl>
228        <dt>
229          Blank line
230        </dt>
231        <dd>
232          You may use blank lines comprised of zero or more space
 > and tab characters.
233        </dd>
234        <dt>
235          Comment
236        </dt>
237        <dd>
238          Comments consist of zero or more tabs or spaces followe
 >d by a single&nbsp;<code>#</code>&nbsp;character, followed by zer
 >o or more characters of comment text. Comments may only be used o
 >n their own lines, and cannot be appended to other lines. This me
 >ans that you cannot specify fragment identifiers.
239        </dd>
240        <dt>
241          Section header
242        </dt>
243        <dd>
244          Section headers specify which section of the cache mani
 >fest is being manipulated. There are three possible section heade
 >rs:
245        </dd>
246      </dl>
247      <blockquote>
248        <table class="standard-table">
249          <tbody>
250            <tr>
251              <th>
252                Section header
253              </th>
254              <th>
255                Description
256              </th>
257            </tr>
258            <tr>
259              <td>
260                <code>CACHE:</code>
261              </td>
262              <td>
263                Switches to the explicit section of the cache man
 >ifest (this is the default section).
264              </td>
265            </tr>
266            <tr>
267              <td>
268                <code>NETWORK:</code>
269              </td>
270              <td>
271                Switches to the online whitelist section of the c
 >ache manifest.
272              </td>
273            </tr>
274            <tr>
275              <td>
276                <code>FALLBACK:</code>
277              </td>
278              <td>
279                Switches to the fallback section of the cache man
 >ifest.
280              </td>
281            </tr>
282          </tbody>
283        </table>
284      </blockquote>
285      <dl>
286        <dd>
287          The section header line may include whitespaces, but mu
 >st include the colon (<code>:</code>) in the section name.
288        </dd>
289        <dt>
290          Section data
291        </dt>
292        <dd>
293          The format for lines of data varies from section to sec
 >tion. In the explicit (<code>CACHE:</code>) section, each line is
 > a valid URI or IRI reference to a resource to cache (no wildcard
 > characters are allowed in this sections). Whitespace is allowed 
 >before and after the URI or IRI on each line. In the Fallback sec
 >tion each line is a valid URI or IRI reference to a resource, fol
 >lowed by a fallback resource that is to be served up when a conne
 >ction with the server cannot be made. In the network section, eac
 >h line is a valid URI or IRI reference to a resource to fetch fro
 >m the network (the wildcard character * is allowed in this sectio
 >n).<br>
294          <div class="note">
295            <strong>Note:&nbsp;</strong>Relative URIs are relativ
 >e to the cache manifest's URI, not to the URI of the document ref
 >erencing the manifest.
296          </div>
297        </dd>
298      </dl>
299      <p>
300        Cache manifest files can switch from section to section a
 >t will (each section header can be used more than once), and sect
 >ions are allowed to be empty.
301      </p>
302      <h2 id="Resources_in_an_application_cache">
303        Resources in an application cache
304      </h2>
305      <p>
306        An application cache always includes at least one resourc
 >e, identified by URI. All resources fit into one of the following
 > categories:
307      </p>
308      <dl>
309        <dt>
310          Master entries
311        </dt>
312        <dd>
313          These are resources added to the cache because a browsi
 >ng context visited by the user included a document that indicated
 > that it was in this cache using its&nbsp;<code>manifest</code>&n
 >bsp;attribute.
314        </dd>
315        <dt>
316          Explicit entries
317        </dt>
318        <dd>
319          These are resources explicitly listed in the applicatio
 >n's cache manifest file.
320        </dd>
321        <dt>
322          Network entries
323        </dt>
324        <dd>
325          These are resources listed in the application's cache m
 >anifest files as network entries.
326        </dd>
327        <dt>
328          Fallback entries
329        </dt>
330        <dd>
331          These are resources listed in the application's cache m
 >anifest files as fallback entries.
332        </dd>
333      </dl>
206    <div class="note">334      <div class="note">
207      <strong>Note:</strong> la lista blanca en línea se ignora e335        <strong>Note:</strong>&nbsp;Resources can be tagged with 
>n versiones de Firefox anteriores a 3.5.>multiple categories, and can therefore be categorized as multiple
 > entries.&nbsp; For example, an entry can be both an explicit ent
 >ry and a fallback entry.
208    </div>336      </div>
209    <p>337      <p>
210      Esto permite asegurarte de que, por ejemplo, las secuencias338        Resource categories are described in greater detail below
> de comandos y otro tipo de código se carguen y ejecuten desde el>.
> servidor en lugar de la caché: 
211    </p>339      </p>
340      <h3 id="Master_entries">
341        Master entries
342      </h3>
343      <p>
344        Master entries are any HTML&nbsp;files that include a {{ 
 >htmlattrxref("manifest","html") }} attribute in their {{ HTMLElem
 >ent("html") }} element.&nbsp; For example, let's say we have the 
 >HTML&nbsp;file&nbsp;<code><a class="linkification-ext external" h
 >ref="http://www.foo.bar/entry.html" title="Linkification: http://
 >www.foo.bar/entry.html">http://www.example.com/entry.html</a></co
 >de>, which looks like this:
345      </p>
346      <pre class="brush: html">
347&lt;html manifest="example.appcache"&gt;
348  &lt;h1&gt;Application Cache Example&lt;/h1&gt;
349&lt;/html&gt;
350</pre>
351      <p>
352        If&nbsp;<code>entry.html</code>&nbsp;is not listed in the
 >&nbsp;<code>example.appcache</code>&nbsp;cache manifest file, vis
 >iting the&nbsp;<code>entry.html</code>&nbsp;page causes&nbsp;<cod
 >e>entry.html</code>&nbsp;to be added to the application cache as 
 >a master entry.
353      </p>
354      <h3 id="Explicit_entries">
355        Explicit entries
356      </h3>
357      <p>
358        Explicit entries are resources that are explicitly listed
 > in the <code>CACHE</code> section of a cache manifest file.
359      </p>
360      <h3 id="Network_entries">
361        Network entries
362      </h3>
363      <p>
364        The&nbsp;<code>NETWORK</code>&nbsp;section of a cache man
 >ifest file specifies resources for which a web application requir
 >es online access. Network entries in an application cache are ess
 >entially an "online whitelist"—URIs specified in the&nbsp;<code>N
 >ETWORK</code>&nbsp;section are loaded from the server instead of 
 >the cache. This lets the browser's security model protect the use
 >r from potential security breaches by limiting access to approved
 > resources.
365      </p>
366      <p>
367        As an example, you can use network entries to load and ex
 >ecute scripts and other code from the server instead of the cache
 >:
368      </p>
212    <pre>369      <pre>
n217    <p>n374      <p>
218      Esto garantiza que las solicitudes para cargar recursos con375        The cache manifest section listed above ensures that requ
>tenidas en el subárbol <code><a class=" external" href="http://ww>ests to load resources contained in the&nbsp;<code><a class="exte
>w.foo.bar/api/" rel="freelink">http://www.foo.bar/api/</a></code>>rnal" href="http://www.example.com/api/" rel="freelink">http://ww
> irán siempre a la red sin intentar tener acceso a ellos desde la>w.example.com/api/</a></code>&nbsp;subtree always go to the netwo
> caché.>rk without attempting to access the cache.
219    </p>376      </p>
220    <h2 id="El_manifiesto_de_la_cach.C3.A9">
221      El manifiesto de la caché
222    </h2>
223    <p>
224      Los archivos de manifiesto de la caché deben atenderse con 
>el tipo MIME <code>text/cache-manifest</code> y todos los recurso 
>s atendidos a través de dicho tipo deben seguir la sintaxis de un 
> manifiesto de la caché de aplicación, tal y como se define en es 
>te artículo. Los manifiestos de la caché son archivos de texto en 
> formato UTF-8 y pueden, opcionalmente, incluir un carácter BOM.  
>Las nuevas líneas estarán representadas por un salto de línea (U+ 
>000A), un retorno de carro (U+000D) o ambos al mismo tiempo. 
225    </p>
226    <p>
227      La primera línea del manifiesto de la caché debe constar de
> la cadena "CACHE MANIFEST" (con un único espacio U+0020 entre la 
>s dos palabras), seguido de cero o más caracteres de espacio o de 
> tabulación. Se ignorará cualquier otro texto en la línea. 
228    </p>
229    <p>
230      El resto del manifiesto de la caché debe constar de cero o 
>más de las líneas siguientes: 
231    </p>
232    <dl>
233      <dt>
234        Línea en blanco
235      </dt>
236      <dd>
237        Puedes usar líneas en blanco que consten de cero o más ca
>racteres de espacio o de tabulación. 
238      </dd>
239      <dt>
240        Comentario
241      </dt>
242      <dd>
243        Los comentarios constan de cero o más tabulaciones o espa
>cios seguidos por un único carácter "#", seguido a su vez por cer 
>o o más caracteres de texto de comentario. Los comentarios pueden 
> usarse solo en sus propias líneas, pero no pueden ser anexados a 
> otras. 
244      </dd>
245      <dt>
246        Encabezado de sección
247      </dt>
248      <dd>
249        Los encabezados de sección especifican qué sección del ma
>nifiesto de la caché se está manipulando. Existen tres encabezado 
>s de sección posibles: 
250      </dd>
251    </dl>
252    <blockquote>
253      <table class="standard-table">
254        <tbody>
255          <tr>
256            <th>
257              Encabezado de sección
258            </th>
259            <th>
260              Descripción
261            </th>
262          </tr>
263          <tr>
264            <td>
265              <code>CACHE:</code>
266            </td>
267            <td>
268              Cambia a la sección explícita. Esta es la sección p
>redeterminada. 
269            </td>
270          </tr>
271          <tr>
272            <td>
273              <code>FALLBACK:</code>
274            </td>
275            <td>
276              Cambia a la sección de reserva.
277              <p>
278                {{ fx_minversion_note(3.5, "The fallback section 
>is ignored by versions of Firefox prior to 3.5.") }} 
279              </p>
280            </td>
281          </tr>
282          <tr>
283            <td>
284              <code>NETWORK:</code>
285            </td>
286            <td>
287              Cambia a la sección de la lista blanca en línea.
288              <p>
289                {{ fx_minversion_note(3.5, "The online whitelist 
>section is ignored by versions of Firefox prior to 3.5.") }} 
290              </p>
291            </td>
292          </tr>
293        </tbody>
294      </table>
295    </blockquote>
296    <dl>
297      <dd>
298        La línea del encabezado de sección puede incluir espacios
> en blanco, pero debe incluir los dos puntos (:) en el nombre de  
>la sección. 
299      </dd>
300      <dt>
301        Datos para la sección actual
302      </dt>
303      <dd>
304        El formato de las líneas de datos varía de una sección a 
>otra. En la sección explícita, cada línea es una referencia URI o 
> IRI válida a un recurso para almacenar en la caché. Se permiten  
>en cada línea los espacios en blanco antes y después del URI o IR 
>I. 
305      </dd>
306    </dl>
307    <p>
308      Los manifiestos de la caché pueden cambiar de una sección a
> otra cuando se desee (de forma que cada encabezado de sección pu 
>ede usarse más de una vez) y se permite que las secciones puedan  
>estar vacías. 
309    </p>
310    <div class="note">377      <div class="note">
311      <strong>Nota:&nbsp;</strong> los URI relativos lo son respe378        <strong>Note</strong>:&nbsp;Simply omitting master entrie
>cto al URI del manifiesto de la caché, no respecto al URI del doc>s (files that have the&nbsp;<code>manifest</code>&nbsp;attribute 
>umento que hace referencia al manifiesto.>set in the&nbsp;<code>html</code>&nbsp;element) from the manifest
 > file would not have the same result, because master entries will
 > be added—and subsequently served from—the application cache.&nbs
 >p;
379      </div>
380      <h3 id="Fallback_entries">
381        Fallback entries
382      </h3>
383      <p>
384        Fallback entries are used when an attempt to load a resou
 >rce fails.&nbsp; For example, let's say the cache manifest file&n
 >bsp;<code><a class="external" href="http://www.example.com/exampl
 >e.appcache" rel="freelink">http://www.example.com/example.appcach
 >e</a></code>&nbsp;includes the following content:
385      </p>
386      <pre>
387CACHE MANIFEST
388FALLBACK:
389example/bar/ example.html
390</pre>
391      <p>
392        Any request to&nbsp;<code><a class="external" href="http:
 >//www.example.com/example/bar/" rel="freelink">http://www.example
 >.com/example/bar/</a></code>&nbsp;or any of its subdirectories an
 >d their content cause the browser to issue a network request to a
 >ttempt to load the requested resource.&nbsp; If the attempt fails
 >, due to either a network failure or a server error of some kind,
 > the browser loads the file&nbsp;<code>example.html</code>&nbsp;i
 >nstead.
393      </p>
394      <h2 id="Cache_states">
395        Cache states
396      </h2>
397      <p>
398        Each application cache has a&nbsp;<strong>state</strong>,
 > which indicates the current condition of the cache.&nbsp; Caches
 > that share the same manifest URI share the same cache state, whi
 >ch can be one of the following:
399      </p>
400      <dl>
401        <dt>
402          <code>UNCACHED</code>
403        </dt>
404        <dd>
405          A special value that indicates that an application cach
 >e object is not fully initialized.
406        </dd>
407        <dt>
408          <code>IDLE</code>
409        </dt>
410        <dd>
411          The application cache is not currently in the process o
 >f being updated.
412        </dd>
413        <dt>
414          <code>CHECKING</code>
415        </dt>
416        <dd>
417          The manifest is being fetched and checked for updates.
418        </dd>
419        <dt>
420          <code>DOWNLOADING</code>
421        </dt>
422        <dd>
423          Resources are being downloaded to be added to the cache
 >, due to a changed resource manifest.
424        </dd>
425        <dt>
426          <code>UPDATEREADY</code>
427        </dt>
428        <dd>
429          There is a new version of the application cache availab
 >le.&nbsp; There is a corresponding&nbsp;<code>updateready</code>&
 >nbsp;event, which is fired instead of the&nbsp;<code>cached</code
 >>&nbsp;event when a new update has been downloaded but not yet ac
 >tivated using the&nbsp;<code>swapCache()</code>&nbsp;method.
430        </dd>
431        <dt>
432          <code>OBSOLETE</code>
433        </dt>
434        <dd>
435          The application cache group is now obsolete.
436        </dd>
437      </dl>
438      <h2 id="Testing_for_updates_to_the_cache_manifest">
439        Testing for updates to the cache manifest
440      </h2>
441      <p>
442        You can programmatically test to see if an application ha
 >s an updated cache manifest file, using JavaScript. Since a cache
 > manifest file may have been updated before a script attaches eve
 >nt listeners to test for updates, scripts should always test&nbsp
 >;<code>window.applicationCache.status</code>.
443      </p>
444      <pre class="brush: js">
445function onUpdateReady() {
446  alert('found new version!');
447}
448window.applicationCache.addEventListener('updateready', onUpdateR
 >eady);
449if(window.applicationCache.status === window.applicationCache.UPD
 >ATEREADY) {
450  onUpdateReady();
451}
452</pre>
453      <p>
454        &nbsp;To manually start testing for a new manifest file, 
 >you can use&nbsp;<code>window.applicationCache.update()</code>.
455      </p>
456      <h2 id="Gotchas">
457        Gotchas
458      </h2>
459      <ul>
460        <li>Never access cached files by using traditional GET pa
 >rameters (like <code>other-cached-page.html?parameterName=value</
 >code>). This will make the browser bypass the cache and attempt t
 >o get it from network. To link to cached resources that have para
 >meters parsed in JavaScript use parameters in the hash part of th
 >e link, such as <code>other-cached-page.html#whatever?parameterNa
 >me=value</code>.
461        </li>
462        <li>When applications are cached, simply updating the res
 >ources (files) that are used in a web page is not enough to updat
 >e the files that have been cached. You must update the cache mani
 >fest file itself before the browser retrieves and uses the update
 >d files. You can do this programmatically using&nbsp;<code>window
 >.applicationCache.swapCache()</code>, though resources that have 
 >already been loaded will not be affected. To make sure that resou
 >rces are loaded from a new version of the application cache, refr
 >eshing the page is ideal.
463        </li>
464        <li>It's a good idea to set expires headers on your web s
 >erver for&nbsp;<code>*.appcache</code>&nbsp;files to expire immed
 >iately. This avoids the risk of caching manifest files. For examp
 >le, in Apache you can specify such a configuration as follows:<br
 >>
465          <code>ExpiresByType text/cache-manifest "access plus 0 
 >seconds"</code>
466        </li>
467      </ul>
468      <h2 id="Browser_Compatibility">
469        Browser Compatibility
470      </h2>
471      <p>
472        {{ CompatibilityTable() }}
473      </p>
474      <div id="compat-desktop">
475        <table class="compat-table">
476          <tbody>
477            <tr>
478              <th>
479                Feature
480              </th>
481              <th>
482                Chrome
483              </th>
484              <th>
485                Firefox (Gecko)
486              </th>
487              <th>
488                Internet Explorer
489              </th>
490              <th>
491                Opera
492              </th>
493              <th>
494                Safari
495              </th>
496            </tr>
497            <tr>
498              <td>
499                Basic support
500              </td>
501              <td>
502                4.0
503              </td>
504              <td>
505                3.5
506              </td>
507              <td>
508                10.0
509              </td>
510              <td>
511                10.6
512              </td>
513              <td>
514                4.0
515              </td>
516            </tr>
517          </tbody>
518        </table>
519      </div>
520      <div id="compat-mobile">
521        <table class="compat-table">
522          <tbody>
523            <tr>
524              <th>
525                Feature
526              </th>
527              <th>
528                Android
529              </th>
530              <th>
531                Firefox Mobile (Gecko)
532              </th>
533              <th>
534                IE Mobile
535              </th>
536              <th>
537                Opera Mobile
538              </th>
539              <th>
540                Safari Mobile
541              </th>
542            </tr>
543            <tr>
544              <td>
545                Basic support
546              </td>
547              <td>
548                2.1
549              </td>
550              <td>
551                {{ CompatVersionUnknown() }}
552              </td>
553              <td>
554                {{ CompatNo() }}
555              </td>
556              <td>
557                11.0
558              </td>
559              <td>
560                3.2
561              </td>
562            </tr>
563          </tbody>
564        </table>
565      </div>
566      <p>
567        Note: Versions of Firefox prior to 3.5 ignore the&nbsp;<c
 >ode>NETWORK&nbsp;</code>and&nbsp;<code>FALLBACK&nbsp;</code>secti
 >ons of the cache manifest file.
568      </p>
569      <h2 id="See_also">
570        See also
571      </h2>
572      <ul>
573        <li>
574          <a class="external" href="http://www.html5rocks.com/en/
 >tutorials/appcache/beginner/" title="http://www.html5rocks.com/en
 >/tutorials/appcache/beginner/">HTML5Rocks - A Beginner's Guide to
 > Using the Application Cache</a>
575        </li>
576        <li>
577          <a class="external" href="http://appcachefacts.info/" t
 >itle="http://appcachefacts.info/">appcachefacts.info</a>&nbsp;- d
 >etailed information on AppCache idiosyncrasies
578        </li>
579        <li>
580          <a class="external" href="http://hacks.mozilla.org/2010
 >/01/offline-web-applications/" title="http://hacks.mozilla.org/20
 >10/01/offline-web-applications/">offline web applications</a>&nbs
 >p;at hacks.mozilla.org - showcases an offline app demo and explai
 >ns how it works.
581        </li>
582        <li>
583          <a class="external" href="http://www.whatwg.org/specs/w
 >eb-apps/current-work/multipage/offline.html#offline" title="http:
 >//www.whatwg.org/specs/web-apps/current-work/multipage/offline.ht
 >ml#offline">HTML 5 working draft: Offline web applications</a>
584        </li>
585        <li>
586          <a class="external" href="http://developer.teradata.com
 >/blog/js186040/2011/11/html5-cache-manifest-an-off-label-usage" t
 >itle="http://developer.teradata.com/blog/js186040/2011/11/html5-c
 >ache-manifest-an-off-label-usage">HTML5 Cache Manifest: An Off-la
 >bel Usage</a>
587        </li>
588        <li>{{ interface("nsIApplicationCache") }}
589        </li>
590        <li>{{ interface("nsIApplicationCacheNamespace") }}
591        </li>
592        <li>{{ interface("nsIApplicationCacheContainer") }}
593        </li>
594        <li>{{ interface("nsIApplicationCacheChannel") }}
595        </li>
596        <li>{{ interface("nsIApplicationCacheService") }}
597        </li>
598        <li>{{ interface("nsIDOMOfflineResourceList") }}
599        </li>
600        <li>
601          <a class="external" href="http://www.ibm.com/developerw
 >orks/web/library/wa-ffox3/">Get ready for Firefox 3.0 - A Web dev
 >eloper's guide to the many new features in this popular browser, 
 >especially the offline application features</a>&nbsp;(IBM develop
 >erWorks)
602        </li>
603      </ul>
604      <p>
605        {{ HTML5ArticleTOC() }}
606      </p>
t313    <h4 id="A_sample_cache_manifest" name="A_sample_cache_manifest
>t"> 
314      Un ejemplo de manifiesto de la caché
315    </h4>
316    <p>
317      Es un manifiesto de la caché sencillo para un sitio web ima
>ginario en <span class="nowiki">foo.com</span>. 
318    </p>608    <p>
319    <pre class="eval">609      &nbsp;
320CACHE MANIFEST
321# v1
322# Esto es un comentario.
323<span class="nowiki">http://www.foo.com/index.html</span>
324<span class="nowiki">http://www.foo.com/header.png</span>
325<span class="nowiki">http://www.foo.com/blah/blah</span>
326</pre>
327    <p>
328      En este ejemplo, no hay encabezado de sección, por lo que t
>odas las líneas de datos deben estar en la sección explícita. 
329    </p>
330    <p>
331      El comentario "v1" está ahí por una buena razón. Como la ca
>ché solo se actualiza cuando cambia el manifiesto, si cambias los 
> recursos (por ejemplo, actualizando la imagen <code>header.png</ 
>code> con contenido nuevo), tendrás que cambiar el archivo de man 
>ifiesto con el fin de que el navegador sepa que tiene que refresc 
>ar la caché. Puedes hacer esto con cualquier modificación en el m 
>anifiesto, pero una buena forma es tener un número de versión. 
332    </p>
333    <h2 id="Especificar_un_manifiesto_de_la_cach.C3.A9">
334      Especificar un manifiesto de la caché
335    </h2>
336    <p>
337      Para indicarle a Firefox que use el almacenamiento en la ca
>ché de la aplicación sin conexión para un determinado sitio web,  
>este tiene que usar el atributo <code>manifest</code> en el eleme 
>nto <code>html</code>, de este modo: 
338    </p>
339    <pre class="eval">
340<span class="nowiki">&lt;html manifest="http://www.foo.com/cache-
>manifest"&gt;</span> 
341  ...
342&lt;/html&gt;
343</pre>
344    <p>
345      Esto hace que la primera vez que el usuario cargue tu aplic
>ación, Firefox muestre en la barra de notificaciones un mensaje c 
>on el texto "Este sitio web (www.example.com) está solicitando al 
>macenar datos en su equipo para usarlos en modo desconexión". [Pe 
>rmitir] [Nunca para este sitio] [Ahora no]". El término "aplicaci 
>ones (habilitadas) sin conexión" hace referencia a veces a aplica 
>ciones concretas que se les permite usar las funcionalidades sin  
>conexión. 
346    </p>
347    <h2 id="El_proceso_de_actualizaci.C3.B3n">
348      El proceso de actualización
349    </h2>
350    <ol>
351      <li>Cuando Firefox visita un documento que incluye un atrib
>uto <code>manifest</code>, envía un evento <code>checking</code>  
>al objeto <code><a href="/en/DOM/window.applicationCache" title=" 
>en/DOM/window.applicationCache">window.applicationCache</a></code 
>>, a continuación captura el archivo de manifiesto, siguiendo las 
> reglas apropiadas para el almacenamiento en caché de HTTP. Si la 
> copia del manifiesto almacenada actualmente en la caché está act 
>ualizada, el evento <code>noupdate</code> se envía a la <code>app 
>licationCache</code> y el proceso de actualización se ha completa 
>do. 
352      </li>
353      <li style="list-style: none">Si el archivo de manifiesto no
> ha cambiado desde la última comprobación de actualizaciones, de  
>nuevo el evento noupdate se envía a la applicationCache y el proc 
>eso de actualización se ha completado. Por esto, si cambias los r 
>ecursos, tienes que cambiar el archivo de manifiesto para que Fir 
>efox sepa que tiene que volver a almacenar los recursos en la cac 
>hé. 
354      </li>
355      <li>Si el archivo de manifiesto ha cambiado, todos los arch
>ivos del manifiesto, así como los que se hayan añadido a la caché 
> llamando a <code><a href="/en/nsIDOMOfflineResourceList#add.28.2 
>9" title="en/nsIDOMOfflineResourceList#add.28.29">applicationCach 
>e.add()</a></code>, son capturados en una caché temporal, siguien 
>do las reglas apropiadas de almacenamiento en caché de HTTP. Por  
>cada archivo capturado en la caché, se envía un evento <code>prog 
>ress</code> al objeto <code>applicationCache</code>. Si sucede cu 
>alquier error, se envía un evento <code>error</code> y la actuali 
>zación se interrumpe. 
356      </li>
357      <li>Una vez que todos los archivos se hayan recuperado corr
>ectamente, se mueven automáticamente a la caché real sin conexión 
> y se envía un evento <code>cached</code> al objeto <code>applica 
>tionCache</code>. 
358      </li>
359    </ol>
360    <h2 id="Ubicaci.C3.B3n_del_almacenamiento_y_borrado_de_la_cac
>h.C3.A9_sin_conexi.C3.B3n"> 
361      Ubicación del almacenamiento y borrado de la caché sin cone
>xión 
362    </h2>
363    <p>
364      Los datos de la caché sin conexión se almacenan a parte del
> perfil de Firefox, junto a la caché de disco normal: 
365    </p>
366    <ul>
367      <li>Windows Vista/7: C:\Users\&lt;username&gt;\AppData\<str
>ong>Local</strong>\Mozilla\Firefox\Profiles\&lt;salt&gt;.&lt;prof 
>ile name&gt;\OfflineCache 
368      </li>
369    </ul>
370    <p>
371      Se puede inspeccionar el estado actual de la caché sin cone
>xión en la página about:cache (debajo del encabezado "Dispositivo 
> de la caché sin conexión"). 
372    </p>
373    <p>
374      La caché sin conexión <strong>no</strong> se borra a través
> de Herramientas &gt; Limpiar historial reciente (<a class="link- 
>https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=538595" 
> title="https://bugzilla.mozilla.org/show_bug.cgi?id=538595">bug  
>538595</a>)<br> 
375      La caché sin conexión <strong>no</strong> se borra a través
> de Herramientas &gt; Opciones &gt; Avanzado &gt; Red &gt; Datos  
>sin conexión &gt; Limpiar ahora (<a class="link-https" href="http 
>s://bugzilla.mozilla.org/show_bug.cgi?id=538588" title="https://b 
>ugzilla.mozilla.org/show_bug.cgi?id=538588">bug 538588</a>).<br> 
376      La caché sin conexión puede borrarse para cada sitio de for
>ma individual mediante el botón "Eliminar..." en Herramientas &gt 
>; Opciones &gt; Avanzado &gt; Red &gt; Datos sin conexión. 
377    </p>
378    <p>
379      Consulta también <a href="/en/DOM/Storage#Storage_location_
>and_clearing_the_data" title="en/DOM/Storage#Storage location and 
> clearing the data">borrar los datos de almacenamiento DOM</a>. 
380    </p>
381    <h2 id="Consulta_tambi.C3.A9n">
382      Consulta también
383    </h2>
384    <ul>
385      <li>
386        <a class="external" href="http://www.whatwg.org/specs/web
>-apps/current-work/multipage/offline.html#offline" title="http:// 
>www.whatwg.org/specs/web-apps/current-work/multipage/offline.html 
>#offline">Borrador de trabajo para HTML 5</a> 
387      </li>
388      <li>
389        <a class="external" href="http://www.whatwg.org/specs/web
>-apps/current-work/multipage/offline.html#offline" title="http:// 
>www.whatwg.org/specs/web-apps/current-work/multipage/offline.html 
>#offline">Aplicaciones web sin conexión</a> en hacks.mozilla.org: 
> presenta una demo de aplicación sin conexión y explica cómo func 
>iona. 
390      </li>
391      <li>{{ interface("nsIApplicationCache") }}
392      </li>
393      <li>{{ interface("nsIApplicationCacheNamespace") }}
394      </li>
395      <li>{{ interface("nsIApplicationCacheContainer") }}
396      </li>
397      <li>{{ interface("nsIApplicationCacheChannel") }}
398      </li>
399      <li>{{ interface("nsIApplicationCacheService") }}
400      </li>
401      <li>{{ interface("nsIDOMOfflineResourceList") }}
402      </li>
403      <li>
404        <a class="external" href="http://www.ibm.com/developerwor
>ks/web/library/wa-ffox3/">Prepárate para Firefox 3.0: una guía de 
> desarrolladores web para la multitud de características nuevas d 
>e este popular navegador, especialmente las características de ap 
>licación sin conexión</a> (IBM developerWorks) 
405      </li>
406    </ul>
407    <p>
408      {{ HTML5ArticleTOC() }}
409    </p>
410    <p>
411      {{ languages( { "en": "en/Offline_resources_in_Firefox", "f
>r": "fr/Ressources_hors_ligne_dans_Firefox", "ja": "ja/Offline_re 
>sources_in_Firefox", "pl": "pl/Zasoby_offline_w_Firefoksie", "zh- 
>tw": "zh_tw/Offline_resources_on_Firefox" } ) }} 

Volver al historial