API Cache Aplikasi HTML5, walaupun tidak digunakan, digunakan untuk membolehkan aplikasi web berfungsi di luar talian oleh sumber caching. Inilah cara anda menggunakannya:
Fail Manifest : Buat fail manifes dengan lanjutan .appcache
. Fail ini menyenaraikan sumber yang perlu disemak oleh penyemak imbas. Format fail manifes adalah seperti berikut:
<code>CACHE MANIFEST # v1 CACHE: /index.html /styles.css /script.js NETWORK: * FALLBACK: / /offline.html</code>
Rujukan HTML : Rujuk fail manifes dalam fail HTML anda dengan memasukkan atribut manifest
dalam tag :
<code class="html"></code>
CACHE
.NETWORK
tidak pernah di -cache, bermakna mereka sentiasa diambil dari rangkaian. Bahagian FALLBACK
menentukan halaman sandaran untuk berkhidmat apabila pengguna berada di luar talian.Nota Penting : Walaupun langkah -langkah ini terperinci bagaimana API cache aplikasi berfungsi, ia tidak dapat digunakan dan tidak boleh digunakan untuk projek baru. Sebaliknya, pemaju harus beralih kepada pekerja perkhidmatan untuk menguruskan fungsi luar talian.
Peralihan dari API Cache Application kepada pekerja perkhidmatan melibatkan beberapa langkah untuk memastikan penghijrahan yang lancar:
manifest
dari fail HTML anda dan padamkan fail .appcache
.Melaksanakan Pekerja Perkhidmatan : Daftar Pekerja Perkhidmatan di fail JavaScript utama anda:
<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>
Tulis Pekerja Perkhidmatan : Buat fail service-worker.js
untuk mengendalikan logik caching. Gunakan Cache API
untuk menyimpan sumber:
<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>
Untuk memastikan aplikasi web anda kekal di luar talian selepas berpindah dari API Cache Application kepada pekerja perkhidmatan, pertimbangkan yang berikut:
Caching Komprehensif : Pastikan semua sumber kritikal yang diperlukan untuk aplikasi anda berfungsi di luar talian di -cache. Ini termasuk HTML, CSS, JavaScript, imej, dan mana -mana aset lain. Gunakan Cache API
dalam Pekerja Perkhidmatan anda untuk mengendalikan ini:
<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>
Mengendalikan Permintaan Rangkaian : Gunakan acara fetch
untuk memintas dan mengendalikan semua permintaan rangkaian. Sekiranya sumber tidak terdapat di dalam cache, anda boleh cuba mengambilnya dari rangkaian dan kemudian cache respons:
<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 Offline : Melaksanakan strategi penolakan luar talian. Sekiranya permintaan gagal, anda boleh melayani halaman sandaran dari cache:
<code class="javascript">self.addEventListener('fetch', function(event) { event.respondWith( fetch(event.request).catch(function() { return caches.match('/offline.html'); }) ); });</code>
Strategi Kemas kini : Pastikan pekerja perkhidmatan anda dapat mengemas kini sendiri dan cache. Gunakan versi dan acara activate
untuk menguruskan kemas kini:
<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>
Apabila berhijrah dari API cache aplikasi kepada pekerja perkhidmatan, penting untuk memahami perbezaan utama berikut:
Fleksibiliti dan kawalan :
Skop dan keupayaan :
Mekanisme Kemas kini :
activate
. Anda boleh menentukan secara jelas kapan dan bagaimana cache dikemas kini, memberikan lebih banyak kemas kini yang boleh diramal dan terkawal.Prestasi dan kecekapan :
Sokongan penyemak imbas dan penyusutan :
Memahami perbezaan ini akan membantu anda memindahkan aplikasi anda dengan berkesan kepada pekerja perkhidmatan, memastikan peralihan yang lancar dan meningkatkan fungsi luar talian.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan API Cache Aplikasi HTML5 (tidak digunakan, menggunakan pekerja perkhidmatan)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!