L'API de cache d'application HTML5, bien que déconseillée, a été utilisée pour permettre aux applications Web de travailler hors ligne en mettant en cache des ressources. Voici comment vous l'auriez utilisé:
Fichier manifeste : créez un fichier manifeste avec une extension .appcache
. Ce fichier répertorie les ressources que le navigateur doit mettre en cache. Le format du fichier manifeste est le suivant:
<code>CACHE MANIFEST # v1 CACHE: /index.html /styles.css /script.js NETWORK: * FALLBACK: / /offline.html</code>
Référence HTML : référence au fichier manifeste dans votre fichier html en incluant l'attribut manifest
dans la balise :
<code class="html"></code>
CACHE
.NETWORK
ne sont jamais mises en cache, ce qui signifie qu'elles sont toujours récupérées du réseau. La section FALLBACK
spécifie les pages de secours à servir lorsque l'utilisateur est hors ligne.Remarque importante : Bien que ces étapes détaillent le fonctionnement de l'API du cache d'application, il est obsolète et ne doit pas être utilisé pour de nouveaux projets. Au lieu de cela, les développeurs devraient passer aux travailleurs des services pour gérer les fonctionnalités hors ligne.
La transition de l'API de cache d'application aux employés de services implique plusieurs étapes pour assurer une migration en douceur:
manifest
de vos fichiers HTML et supprimez les fichiers manifestes .appcache
.Implémentation du travailleur des services : enregistrez un travailleur des services dans votre fichier JavaScript principal:
<code class="javascript">if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/service-worker.js').then(function(registration) { console.log('ServiceWorker registration successful with scope: ', registration.scope); }, function(err) { console.log('ServiceWorker registration failed: ', err); }); }); }</code>
Écrivez le service de service : créez un fichier de service-worker.js
pour gérer la logique de mise en cache. Utilisez l' Cache API
pour stocker les ressources:
<code class="javascript">self.addEventListener('install', function(event) { event.waitUntil( caches.open('my-cache').then(function(cache) { return cache.addAll([ '/', '/index.html', '/styles.css', '/script.js' ]); }) ); }); self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request).then(function(response) { return response || fetch(event.request); }) ); });</code>
Pour vous assurer que votre application Web reste hors ligne après avoir migré de l'API de cache d'application aux travailleurs du service, considérez ce qui suit:
Cache complète : assurez-vous que toutes les ressources critiques nécessaires pour que votre application fonctionne hors ligne soit mise en cache. Cela inclut HTML, CSS, JavaScript, Images et tout autre actif. Utilisez l' Cache API
au sein de votre travailleur de service pour gérer ceci:
<code class="javascript">self.addEventListener('install', function(event) { event.waitUntil( caches.open('my-cache').then(function(cache) { return cache.addAll([ '/', '/index.html', '/styles.css', '/script.js', '/offline.html' ]); }) ); });</code>
Gérer les demandes de réseau : utilisez l'événement fetch
pour intercepter et gérer toutes les demandes de réseau. Si une ressource n'est pas trouvée dans le cache, vous pouvez tenter de le récupérer à partir du réseau, puis mettre en cache la réponse:
<code class="javascript">self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request).then(function(response) { return response || fetch(event.request).then(function(response) { return caches.open('my-cache').then(function(cache) { cache.put(event.request, response.clone()); return response; }); }); }) ); });</code>
Fallback hors ligne : implémentez une stratégie de replls hors ligne. Si une demande échoue, vous pouvez servir une page de secours à partir du cache:
<code class="javascript">self.addEventListener('fetch', function(event) { event.respondWith( fetch(event.request).catch(function() { return caches.match('/offline.html'); }) ); });</code>
Stratégie de mise à jour : assurez-vous que votre travailleur de service peut se mettre à jour et le cache. Utilisez le versioning et l'événement activate
pour gérer les mises à jour:
<code class="javascript">self.addEventListener('activate', function(event) { var cacheWhitelist = ['my-cache-v2']; event.waitUntil( caches.keys().then(function(cacheNames) { return Promise.all( cacheNames.map(function(cacheName) { if (cacheWhitelist.indexOf(cacheName) === -1) { return caches.delete(cacheName); } }) ); }) ); });</code>
Lors de la migration de l'API de cache d'application vers les travailleurs des services, il est important de comprendre les principales différences suivantes:
Flexibilité et contrôle :
Portée et capacités :
Mécanisme de mise à jour :
activate
. Vous pouvez explicitement définir quand et comment les caches sont mises à jour, offrant des mises à jour plus prévisibles et contrôlées.Performance et efficacité :
Prise en charge et dépréciation du navigateur :
La compréhension de ces différences vous aidera à migrer efficacement votre application auprès des travailleurs de service, assurant une transition en douceur et une fonctionnalité hors ligne améliorée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!