Чтобы хранить файлы папок в кеше с помощью прогрессивных веб-приложений (PWA) в Laravel, вы можете использовать несколько подходов. Вот несколько методов с примерами кода:
Метод 1. Использование API Service Worker
- Зарегистрируйте сервис-воркера в своем приложении Laravel. Создайте файл JavaScript с именем
service-worker.jsв общедоступном каталоге со следующим кодом:
// service-worker.js
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open('my-cache').then(function(cache) {
return cache.addAll([
'/path/to/file1.jpg',
'/path/to/file2.css',
// Add more files here
]);
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
return response || fetch(event.request);
})
);
});
- В вашем приложении Laravel включите следующий код в основной файл макета (например,
app.blade.php):
<!-- app.blade.php -->
<!DOCTYPE html>
<html>
<head>
<!-- Your head content -->
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(function(registration) {
console.log('Service Worker registered with scope:', registration.scope);
}).catch(function(error) {
console.log('Service Worker registration failed:', error);
});
}
</script>
</head>
<body>
<!-- Your body content -->
</body>
</html>
Метод 2. Использование Workbox
- Установите пакет Workbox через npm:
npm install workbox-sw
- Создайте файл с именем
sw.jsв общедоступном каталоге со следующим кодом:
// sw.js
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.1.5/workbox-sw.js');
workbox.routing.registerRoute(
/\.(?:jpg|css)$/,
new workbox.strategies.CacheFirst()
);
- В вашем приложении Laravel включите следующий код в основной файл макета (например,
app.blade.php):
<!-- app.blade.php -->
<!DOCTYPE html>
<html>
<head>
<!-- Your head content -->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
console.log('Service Worker registered with scope:', registration.scope);
}).catch(function(error) {
console.log('Service Worker registration failed:', error);
});
});
}
</script>
</head>
<body>
<!-- Your body content -->
</body>
</html>