0

0

培养 Service Worker:不容错过的 5 个重要技巧

PHPz

PHPz

发布时间:2023-09-09 19:21:09

|

770人浏览过

|

来源于php中文网

原创

浏览器的 service worker api 允许 web 设计者为访问者提供他们以前从未有过的东西:即使在离线状态下(无论是短时间还是长时间)也可以访问网站或 web 应用程序。

p>

无论您是想确保访问者在穿过火车隧道时仍然可以阅读您的网站,还是想创建不需要互联网连接的应用,服务工作人员都能提供完美的解决方案。

尽管 Service Worker 非常出色,但当您第一次开始对其进行编码时,会有一些障碍可能会减慢您的进度 - 除非您预先意识到这些障碍是什么。本教程将为您提供 Service Worker 开发的五个基本技巧,我们希望它们能够帮助您避免这些问题,并让您免于相关的故障排除麻烦。

开始之前

如果您是 Service Worker 新手,请查看我们的初学者课程《离线网站的简单 Service Workers》和 Jeremy Keith 的书《Going Offline》,这两本书都可以在 Envato Elements 上找到。

1. 将您的 Service Worker 脚本放入根目录

培养 Service Worker:不容错过的 5 个重要技巧

当您编写第一个服务时可能会遇到的最早问题 工人,你可能会做你一直做的事情并把你的脚本 进入名为 jsscripts 的子目录。然而,对于服务人员来说,这种普通的操作可能会出现问题。

原因是,默认情况下,Service Worker 的范围是由其位置定义的。这意味着什么?这意味着如果您将脚本放在 /js 目录中,其范围现在仅限于该 /js 目录。因此,它只能处理来自 www.yoursite.com/js/ 的页面请求,并完全忽略其他请求,例如来自 www 的请求例如,.yoursite.comwww.yoursite.com/news/

这种有限的范围反过来意味着您将无法为网站的大部分内容提供离线后备。为了使您的 Service Worker 能够处理来自站点任何部分的任何请求,其范围必须是包罗万象的。

注意:您实际上可以在注册时覆盖 Service Worker 的默认范围,例如

navigator.serviceWorker.register('/sw.js', {
  scope: '/'
});

通过这种方法,如果这样做对您的项目非常重要,您仍然可以将所有脚本存放在子目录中。

但一般来说,最简单的方法是将您的 Service Worker 放在根目录中,从而自动将其范围设置为覆盖整个站点。

2. 使用 Chrome / Chromium 开发工具中的应用程序面板

虽然所有主要浏览器都支持 Service Worker,但目前 Chrome 或 Chromium 可以说是开发它们的最佳浏览器。这要归功于开发人员工具中非常有用的应用程序面板。当您经历开发过程时,您几乎将生活在这个选项卡中:

培养 Service Worker:不容错过的 5 个重要技巧

在此选项卡中有一个服务工作人员专用部分,您可以在其中验证您的脚本是否已注册、活动并正在运行。您还可以使用此选项卡模拟离线状态,暂时绕过服务工作线程,并手动注销以前不再需要的脚本。

3.不要使用硬重载

除了不将脚本放在子目录中之外,在组合 Service Worker 时必须打破的另一个开发习惯是使用“硬重新加载”或“清空缓存和硬重新加载”。在测试站点时,您可能已经这样做了数千次,使用该功能清除缓存并确保您看到开发更改的准确反映。但对于 Service Worker,这不会达到预期的效果。

DeepL
DeepL

DeepL是一款强大的在线AI翻译工具,可以翻译31种不同语言的文本,并可以处理PDF、Word、PowerPoint等文档文件

下载

培养 Service Worker:不容错过的 5 个重要技巧

何时 您有一名注册并活跃的服务人员,任何使用“硬 Reload”将完全绕过它。您可能会硬重新加载您的网站,请参阅 你的代码没有按照你期望的方式执行,并认为你犯了一个错误,后来才意识到脚本从未在第一次运行过 地点。

因此,坏消息是“硬重载”和“清空缓存并硬重载”在 Service Worker 开发过程中超出了范围,这让我们想到了下一个问题:

如何 您可以正确刷新页面并测试您的 Service Worker 代码吗 如果您不能使用“硬重新加载”或“清空缓存并硬重新加载”,会发生变化吗?

这个问题的答案在于以下两个技巧:

4.选中“重新加载时更新”框

默认情况下,当您刷新正在测试 Service Worker 的页面时,您实际上不会看到任何代码更改的结果。这是因为您最初注册的脚本版本在浏览器中保持活动状态,即使在页面重新加载后也是如此,除非您采取明确的操作来更新它。

因此,我们再次遇到这样的情况,您可能正在刷新您的 页面并想知道为什么您的代码更改没有生效,除非 您了解服务人员的怪癖。

培养 Service Worker:不容错过的 5 个重要技巧

要确保始终加载最新版本的脚本,请进入应用程序 选项卡并选中重新加载时更新框。这可以确保每次重新加载页面时(请记住,仅使用正常重新加载,而不是硬重新加载),浏览器会自动为您更新 Service Worker。

注意:还有一个附加选项可以单击注册的 Service Worker 旁边显示的更新链接,但使用自动重新加载方法通常更容易。

5.检查并手动删除缓存对象

我们要接触的应用程序选项卡的最后一个非常方便的功能是能够查看缓存中存储的对象,并根据需要手动删除它们。鉴于我们不想使用清空缓存和硬重载,此功能将成为 Service Worker 开发过程的重要组成部分。

应用程序标签的左栏中,您会看到一个区域 标记为缓存存储。如果你扩大这个区域,你将能够看到 存储中保存的与当前 URL 相关的任何缓存对象。

培养 Service Worker:不容错过的 5 个重要技巧

点击其中任意项目,您可以检查其 内容,这对于验证您想要的资源非常有帮助 离线服务正在由您的服务工作人员正确添加到缓存中。

要删除不再需要的缓存对象,只需右键单击对象并选择删除

培养 Service Worker:不容错过的 5 个重要技巧

在此缓存对象删除功能和重新加载时更新复选框之间,您就可以了设置为坚持使用正常的页面重新加载,同时仍然确保您正确测试对工作的最新更改。

总结

  • 一般来说,将服务工作线程脚本放在项目的根目录中,以便整个网站都在其范围内。

  • 开发时使用 Chrome/Chromium 的“应用程序”选项卡。
  • 请勿使用硬重新加载清空缓存并硬重新加载

  • 选中应用程序标签中的重新加载时更新框,以确保注册的 Service Worker 是最新的。

  • 根据需要,通过应用程序选项卡的缓存存储部分手动删除缓存对象,您还可以在其中检查缓存对象内容。

有关 Service Worker 的更多信息,请查看我们的新课程《离线网站的简单 Service Workers》以及 Jeremy Keith 的书《Going Offline》(现已在 Envato Elements 上提供)。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

778

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

731

2023.11.06

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

480

2023.08.10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

254

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5270

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

477

2023.09.01

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号