Кэш, IndexedDB, serviceworker и manifest удаляются после того, как я отключаюсь - PullRequest
0 голосов
/ 05 октября 2018

Итак, я создал сервисный работник, и он кэширует файлы веб-сайта (проверил его на devtools, они кэшируются в IndexedDB и Cache Storage.

Я использую рабочий ящик и сделал следующие вещи:

1) Я использовал его на своем сервере nodejs (index.js) сразу после всех требуемых переменных / consts:

 const https = require('https');
 const fs = require('fs');
 var path = require('path');
 const express = require('express');
 const app = express();
 const router = express.Router();
 const pool = require('./mysqldb.js');
 const pathView = __dirname + "/views/";
 const IMGPath = "/public";
 var bodyParser = require("body-parser");
 const listenPort = 8010;
 const workboxBuild = require('workbox-build');

 app.use(bodyParser.urlencoded({ extended: true }));

 app.use(bodyParser.json());

 app.set('view engine', 'ejs');

 app.use(express.static('public'));
 app.use('/public', express.static('public'));
 app.use(express.static('views'));
 app.use('/views',express.static('views'));
 router.use(function (req, res, next) {
   next();
 });

 router.get('/', function (req, res) {
    res.render(pathView + 'home.ejs', { msg:" > "  });
 });//and few more .ejs files just like this one

 app.use( "/", router);

 app.use("*",function(req,res){
 res.setHeader('Content-Type', 'text/html');
 res.status(404).send('Page introuvable !');
 });

 app.listen(listenPort, function () {
 console.log('PWA listening on port ' + listenPort );
 });

 const buildSW = () => {
 return workboxBuild.generateSW({
 globDirectory:      '/var/www/ww1sites.app/emil/NETWORLD/makenavbar/networld/samples/networldfinalv3/',
     globPatterns: [
       '**\/*.{html,json,js,css,ejs}',
     ],
     swDest:      '/var/www/ww1sites.app/emil/NETWORLD/makenavbar/networld/samples/networldfinalv3/public/ServiceWorker.js',
     clientsClaim: true,
     skipWaiting: true
   });
 }

 buildSW();

 https.createServer(options, app).listen(8000);

И этот buildSW () сгенерировал файл ServiceWorker.js со следующимcontent:

  importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.2/workbox-sw.js");

  workbox.skipWaiting();
  workbox.clientsClaim();

  self.__precacheManifest = [
  {
  "url": "index.js",
  "revision": "09b1cd28e310f1e9aed3d11c967e36bf"
  },
  {
  "url": "mysqldb.js",
  "revision": "2f375ec22385cde075c3027a45f712fe"
  },
  {
  "url": "public/addSW.js",
  "revision": "db7d09ac05f8d7da77a7bccbdb037f91"
  },
  {
  "url": "public/manifest.json",
  "revision": "0addc89535552310fe57e848156eba13"
   },
    {
      "url": "public/TOKEO-ServiceWorker.js",
      "revision": "c7972d42d60771b41f1499491c3632a6"
    },
    {
      "url": "views/about.ejs",
      "revision": "11d729194a0669e3bbc938351eba5d00"
    },
    {
      "url": "views/details.ejs",
      "revision": "881d8ca1f2aacfc1617c09e3cf7364f0"
    },
    {
      "url": "views/head.ejs",
      "revision": "eaa0f2065cf822351c1f2490f9380e30"
    },
    {
      "url": "views/home.ejs",
      "revision": "7e50eec344ce4d01730894ef1d637d4d"
    },
    {
      "url": "views/home1.ejs",
      "revision": "a34ea6e5245b45aefba102dab23f68ac"
    },
    {
      "url": "views/map.ejs",
      "revision": "c3942a2a8ac5b713d63c53616676974a"
    },
    {
      "url": "views/mapbox-script.ejs",
      "revision": "1363899a94e5cb63333f8c79886cdf1b"
    },
    {
      "url": "views/navbar.ejs",
      "revision": "97aacd7b7705e72ed7696673412b96e1"
    },
    {
      "url": "views/scripts.ejs",
      "revision": "15c88be24be624a683f7be97fd8abcce"
    },
    {
      "url": "workbox-config.js",
      "revision": "20dcffa419f1b8c9e06c630df4821446"
    }
  ].concat(self.__precacheManifest || []);
  workbox.precaching.suppressWarnings();
  workbox.precaching.precacheAndRoute(self.__precacheManifest, {});

Все файлы кэшируются, как я сказал, но есть одна небольшая вещь, которую я понял в IndexedDB, это то, что node.js и mysqldb.js кэшируются, но в Cache Storage они не 'я думаю, что это странно.Когда я перехожу в автономный режим (от Devtools) после нажатия кнопки или чего-либо на веб-странице, это дает мне стандартную отсутствующую страницу подключения к Интернету, и Cache Storage, IndexedDB, ServiceWorker.js и manifest.json ушли из devtools, они 'все удалено.

Что мне делать?Помогите мне разобраться, если я не кэширую index.js (сервер nodejs), я не смогу заставить сайт работать в автономном режиме, или я могу это сделать, даже если сервер nodejs не кэшируется ??

Структура проекта следующая:

 PROJECT|--index.js
        |--mysqldb.js
        |--public|--addSW.js(this is the script that I used to register the servic worker to the first page that I access on the website(I places it in the home.ejs just before the </body> with a <script src=... /> and it contains only the clasic&standard registration for a service worker)
                 |--manifest.json
                 |--ServiceWorker.js
        |--views|--home.ejs
                |--home1.ejs
                |--scripts.ejs
                |--navbar.ejs
                |--map.ejs
                |--about.ejs
                |--details.ejs
                |--head.ejs

Все, что я хочу, - заставить это приложение работать в автономном режиме. Пожалуйста, помогите мне ...

...