笨猫博客

  • 🍟首页
  • 🍘目录
    • 🥝VPS教程
    • 🍾猫玩技术
    • 🍹干货分享
    • 🍏软件分享
    • 🍩一只猫
  • 🍋工具
    • 🌽IP路由追踪
    • 🍐域名Whois查询
    • 🥘域名被墙查询
    • 🍧IP正常检测
    • 🔥IP端口检测
    • 🍆短网址
    • 🐟VIP音乐播放
    • 🍯KMS激活
  • 🍓链接
  • 🍪联系
  • 🍱登录
    • 🥦登录
    • 🍒注册
关注互联网,生活,音乐,乐此不疲的一只笨猫
  1. 首页
  2. 猫玩技术
  3. 正文

用 Service Workers 为网站加速

2019-01-09 7496点热度 2人点赞 3条评论

其实 Service Workers 是 Google 爸爸推出很久的一个黑科技,它可以在浏览器层面动态缓存一些请求,从而使网站的二次加载速度大幅提高。

用 Service Workers 为网站加速

二次刷新我的博客,只重载了 16.0KB 的资源,甚至可以剪断网线访问 ∠( ᐛ 」∠)_

需要注意的是,Service Workers 只有在 HTTPS 的前提下才能发挥作用

添加 sw-toolbox 核心

下载 sw-toolbox.js 并且放置到主题目录下的 assets/js 目录

*如果你是默认主题,应该是在path_to_ghost/content/themes/casper/assets/js

创建缓存规则

在主题根目录下创建 serviceworker.js,并且写入下面内容

'use strict';

(function () {
  'use strict';
    /**
    * Service Worker Toolbox caching
    */

    var cacheVersion = '-toolbox-v1';
    var dynamicVendorCacheName = 'dynamic-vendor' + cacheVersion;
    var staticVendorCacheName = 'static-vendor' + cacheVersion;
    var staticAssetsCacheName = 'static-assets' + cacheVersion;
    var contentCacheName = 'content' + cacheVersion;
    var maxEntries = 50;

    self.importScripts('assets/js/sw-toolbox.js');

    self.toolbox.options.debug = false;

    // 缓存本站静态文件
    self.toolbox.router.get('/assets/(.*)', self.toolbox.cacheFirst, {
        cache: {
          name: staticAssetsCacheName,
          maxEntries: maxEntries
        }
    });

    // 缓存 googleapis
    self.toolbox.router.get('/css', self.toolbox.fastest, {
        origin: /fonts.googleapis.com/,
            cache: {
              name: dynamicVendorCacheName,
              maxEntries: maxEntries
            }
    });

    // 不缓存 DISQUS 评论
    self.toolbox.router.get('/(.*)', self.toolbox.networkOnly, {
        origin: /disqus.com/
    });
    self.toolbox.router.get('/(.*)', self.toolbox.networkOnly, {
        origin: /disquscdn.com/
    });


    // 缓存所有 Google 字体
    self.toolbox.router.get('/(.*)', self.toolbox.cacheFirst, {
        origin: /(fonts.gstatic.com|www.google-analytics.com)/,
        cache: {
          name: staticVendorCacheName,
          maxEntries: maxEntries
        }
    });

    self.toolbox.router.get('/content/(.*)', self.toolbox.fastest, {
        cache: {
          name: contentCacheName,
          maxEntries: maxEntries
        }
    });

    self.toolbox.router.get('/*', function (request, values, options) {
        if (!request.url.match(/(/ghost/|/page/)/) && request.headers.get('accept').includes('text/html')) {
            return self.toolbox.fastest(request, values, options);
        } else {
            return self.toolbox.networkOnly(request, values, options);
        }
        }, {
        cache: {
            name: contentCacheName,
            maxEntries: maxEntries
        }
    });

    // immediately activate this serviceworker
    self.addEventListener('install', function (event) {
        return event.waitUntil(self.skipWaiting());
    });

    self.addEventListener('activate', function (event) {
        return event.waitUntil(self.clients.claim());
    }); 

})();

启用 Service Workers

在主题下的 default.hbs 文件 </body> 标签前加入下面代码

 <script>
    var serviceWorkerUri = '/serviceworker.js';

    if ('serviceWorker' in navigator) {  
        navigator.serviceWorker.register(serviceWorkerUri).then(function() {
          if (navigator.serviceWorker.controller) {
            console.log('Assets cached by the controlling service worker.');
          } else {
            console.log('Please reload this page to allow the service worker to handle network operations.');
          }
        }).catch(function(error) {
          console.log('ERROR: ' + error);
        });
    } else {
        console.log('Service workers are not supported in the current browser.');
    }
    </script>

搞定!刷新一遍,剪断网线试试吧 ୧(๑•̀⌄•́๑)૭

标签: 网站加速
最后更新:2023-04-30

笨猫

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • C

    就是强制缓存XHR请求和HTML,不过对于更新频繁的网站来说还是用不缓存的好

    2019-01-14
  • vultr vps

    不错 试试

    2019-02-03
  • 天天下载

    感谢分享,谢谢站长!!@天天下载

    2023-04-30
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    最新 热点 随机
    最新 热点 随机
    分享一下大部分VPS以及甲骨文ARM/AMD、AWS、谷歌云GCP通用DD方法!统 TCP-Optimize:TCP/UDP 网络深度调优脚本 基于 Cloudflare Workers + D1 的自托管 2FA/TOTP 验证码管理工具、分享链接功能 cloudflare-light-blog: 基于 Cloudflare Workers + D1 + R2 构建的轻量级博客系统 LiteMark 书签管理系统 基础ai mcp 支持cf works部署 docker部署 komari-theme-Lumina探针主题开源!
    分享一下大部分VPS以及甲骨文ARM/AMD、AWS、谷歌云GCP通用DD方法!统
    wordpress乱码问题的终极解决方法 基于 Cloudflare Pages + Workers 博客项目 MyTshirt 2.0 全新界面登场! Leica 中文摄影杂志 - 莱卡中文站 2008年新年愿望 一个有意思网盘加速下载小工具
    最近评论
    宝宝 发布于 3 周前(08月11日) 腻害
    叶颂 发布于 1 个月前(07月28日) 好棒啊
    ǝɔ∀ǝdʎz∀ɹɔ 发布于 1 个月前(07月24日) 从 curl/8.10.0 开始, curl 是不能用来测试 VPS 是 IPv4优先还是IPv6优...
    Heo 发布于 3 个月前(06月09日) 挺好的,我是部署在家里的软路由上,比较安全
    Web Harmonium 发布于 4 个月前(04月20日) Stash 的界面看起来比小火箭清爽直观多了,2.99美元的价格也算合理,感谢提醒,不手动修改策略组...
    标签
    elliptictrue100.10.02
    BLOG ChatGPT Chrome CloudFlare DirectAdmin github Godaddy google kloxo Linux OneDrive OneIndex PHP QQ shadowsocks SNS ssh Typecho VPS web2.0 whmcs Windows wordpress 一键脚本 下载 免费 博客 图文教程 图标 图片 域名 头像 奥运 宝塔面板 插件 教程 日记 有趣 浏览器 游戏 猫 生活 电影 百度 网站 视频 设计 软件 阿里云盘 音乐
    好友
    • glzjin's blog glzjin's blog
    • ZAERA博客
    • 冰沫记
    • 奇它博客
    • 猫腻‘s Blog
    • 猫饭
    • 肥宅之家
    • 萌博
    • 野路子程序员

    COPYRIGHT © 2022 笨猫博客. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang