首页 > 解决方案 > 渐进式 Web 应用程序 laravel 缓存问题

问题描述

我正在为我的 laravel 项目使用 PWA,我的 PWA 应用程序运行良好,我的网站仅在 https 中运行,但是当我登录我的网站时显示我的旧登录用户详细信息,我该如何解决这个问题?

  1. 恐怕我的网站也是基于缓存运行的
  2. 在我的浏览器中未显示本地主机 PWA 图标我如何在本地主机中解决

在这里我添加了服务提供者 js 文件

// Cache API
const staticCacheName = 'app-shell-v2.0';
const filesToCache = [
  // Files
  '.',
    //css files and js file
];

self.addEventListener('install', event => {
  console.log('Installing worker to cache static assets');
  
  self.skipWaiting();
  
  event.waitUntil(
    caches.open(staticCacheName)
    .then(cache => {
      return cache.addAll(filesToCache);
    })
  );
});

self.addEventListener('activate', event => {
  console.log('Activating new worker...');
  
  const cacheWhitelist = [staticCacheName];
  self.clients.claim();
  
  event.waitUntil(
    caches.keys().then(cacheNames => {
      return Promise.all(
        cacheNames.map(cacheName => {
          if (cacheWhitelist.indexOf(cacheName) === -1) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
});

self.addEventListener('fetch', event => {
  // exclude directories from cache
  /*if (event.request.url.match('^.*(\/admin\/).*$','^.*(\/users\/show\/).*$')) {
        return false;
  }
  if (event.request.url.endsWith('authenticate')) {
        return false;
  }*/
  console.log('Fetch event for ', event.request.url);
  event.respondWith(
    caches.match(event.request)
    .then(response => {
      if (response) {
        console.log('Found ', event.request.url, ' in cache');
        return response;
      }
      console.log('Network request for ', event.request.url);
      return fetch(event.request)
      .then(response => {
        if (response.status === 404) {
          return caches.match('https://site_url/404.html');
        }
        return caches.open(staticCacheName)
        .then(cache => {
          cache.put(event.request.url, response.clone());
          return response;
        });
      });
    }).catch(error => {
      console.log('Error, ', error);
      return caches.match('https://site_url/offline.html');
    })
  );
});

标签: laravelprogressive-web-appsbrowser-cache

解决方案


推荐阅读