首页
学习
活动
专区
圈层
工具
发布

Service Worker和HTTP缓存

很多人,包括我自己,初看Service Worker多一个Cache Storage的时候,就感觉跟HTTP长缓存没什么区别。...例如大家讲的最多的Service Worker能让网页离线使用,但熟悉HTTP缓存的朋友,会发现,把整站所有资源设置为长缓存(不带校验),也可以实现离线使用。...那么,Service Worker在缓存方面和HTTP缓存比较,有什么好处呢?...Service worker除了针对PWA(推送和消息)以外,对普通web来说,在缓存方面,能比http缓存带来一些额外的好处。 可以理解为,SW就是浏览器把缓存管理开放一层接口给开发者。...例如校验html/JS是否被运营商劫持?js文件到了UI进程执行后,就无法删除恶意代码,而在SW中,我们可以当作文本一样,轻松解决。当然,在HTTPS环境下出现劫持的概率是极低的。

1.8K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Service Worker 缓存文件处理

    交代背景 前段时间升级了一波Google Chrome,发现我的JulyNovel站点Ctrl+F5也刷新不了,后来发现是新的Chrome已经支持Service Worker,而我的JulyNovel也满足...之前加载过的css和js都被缓存了。 所以这里是有点小问题的,毕竟我服务器更新了,你service worker 没给我更新缓存,就说不过去了。...Service Worker生命周期的意义 1.实现离线优先(这个不谈,没网也能搞事?这妥妥的Native的能力啊) 2.允许新服务工作线程自行做好运行准备,无需中断当前的服务工作线程。...更新service worker 这里就是解决问题的关键了。...首先,会触发更新的情况如下 1.导航到一个作用域内的页面。 2.更新 push 和 sync 等功能事件,除非在前 24 小时内进行了更新检查。

    1.9K30

    《前端缓存系统构建:浏览器与Service Worker的自动清理与命中率优化策略》

    基于浏览器原生缓存机制(如HTTP缓存、Cache Storage)与Service Worker构建的前端缓存体系,面临的核心挑战在于如何在“缓存有效性”与“资源新鲜度”之间找到动态平衡——既要避免缓存冗余导致的存储空间浪费...浏览器提供的缓存机制各有特性:HTTP缓存依赖响应头字段(如Cache-Control、Expires)自动生效,适合静态资源却难以主动干预;Cache Storage由Service Worker直接操控...更精细的做法是结合用户行为规律,在夜间或用户离线时执行深度清理,例如新闻应用可在凌晨自动清理前一天的文章详情页缓存,仅保留头条新闻与用户收藏内容,既释放存储空间,又不影响核心体验。...“主动通知+协商验证”处理,网站发布新版本时,Service Worker发送消息通知客户端清理旧缓存,或请求时携带ETag与服务器确认资源是否更新,避免旧内容干扰用户。...浏览器缓存机制与Service Worker提供了工具支撑,但真正决定系统效能的,是如何在“离线可用”与“内容新鲜”“存储空间”与“加载速度”之间找到动态平衡。

    52410

    H5 加了 Service Worker 反而更新不出来:缓存策略与版本激活的正确顺序

    给 H5 轻应用加离线能力、做资源缓存,本来是为了让二次打开更快、弱网下也能用,但很多团队第一次接入 Service Worker 都会遇到同一个反直觉问题:代码明明发布了,用户看到的却还是旧页面,甚至要手动清缓存...问题几乎都不在缓存本身,而在 Service Worker 的生命周期和版本激活顺序没处理对。...一、先理解:为什么会"卡在旧版本"Service Worker(以下简称 SW)有自己独立的生命周期,它和页面是分离的:浏览器发现 SW 文件变化,进入 install 阶段预缓存新资源;新 SW 安装完成后不会立刻接管页面...是否自动 reload 取决于业务:后台型、表单型页面不宜强制刷新(会丢掉用户正在填的内容),更适合弹一个"有新版本,点击刷新"的轻提示,由用户决定。...复盘清单SW 文件本身是否设置为不缓存。HTML 入口是否用了网络优先而非缓存优先。缓存是否带版本号、activate 是否清理旧版本。

    13410

    一次因浏览器缓存导致的生产环境事故:前端线上 bug 复盘

    、Last-Modified 对比隐身模式、禁用缓存、正常模式三种行为,确认缓存参与 检查 Service Worker 是否接管并返回旧版本 index.html 在不同网络与地区抓取响应头,确认 CDN...,边缘节点与源站内容不一致,扩大了影响范围 开启 gzip 后 ETag 与 If-None-Match 不匹配,弱校验未生效 叠加 Service Worker 未及时激活新版本,个别用户被旧 SW...开启监控:资源 404 比例、白屏率、JS 错误率实时告警 验证方法 使用隐身模式与禁用缓存分别访问,确认是否消除问题 对比 curl -I 返回头部,验证是否已改为不缓存入口和长期缓存静态 检查 Service...,避免静默长期旧版本 自测清单 打开正常模式、隐身模式、禁用缓存模式分别访问主页 观察 index.html 是否返回 no-cache, no-store, must-revalidate 观察静态资源是否返回...Worker 是否拿到新 index.html 并正确激活 教训总结 入口文档与静态资源必须采用差异化缓存策略 指纹与长期缓存是前提,入口不缓存是关键 CDN 刷新与验证需要成为发布必经步骤 Service

    62110

    一篇关于浏览器缓存知识的梳理

    否则把响应参数存在request header请求头中,看是否符合协商缓存,符合则返回状态码304,不符合则服务器会返回全新资源。...pragma 这个是HTTP1.0中禁用网页缓存的字段,其取值为no-cache,和Cache-Control的no-cache效果一样。 image.png 2....Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker的话,传输协议必须为 HTTPS。...因为 Service Worker 中涉及到请求拦截,所以必须使用 HTTPS 协议来保障安全。...刷新对于强缓存和协商缓存的影响 1. 当ctrl+f5强制刷新网页时,直接从服务器加载,跳过强缓存和协商缓存。 2. 当f5刷新网页时,跳过强缓存,但是会检查协商缓存。 3.

    91121

    一文读懂浏览器缓存

    调用 Service Worker 的 fetch 事件获取资源; 查看 memory cache; 查看 disk cache;这里又细分: 如果有强制缓存且未失效,则使用强制缓存,不请求服务器。...Service Worker 是一个注册在指定源和路径下的事件驱动 worker;特点是: 运行在 worker 上下文,因此它不能访问 DOM; 独立于主线程之外,不会造成阻塞; 设计完全异步,所以同步...其实它有一个功能就是离线缓存:Service Worker Cache;区别于浏览器内部的 memory cache 和 disk cache,它允许我们自己去操控缓存,具体操作过程可以参看 Using_Service_Workers...;通过 Service Worker 设置的缓存会出现在浏览器开发者工具 Application 面板下的 Cache Storage 中。...disk cache 也叫 HTTP cache 是存在硬盘中的缓存,根据 HTTP 头部的各类字段进行判定资源的缓存规则,比如是否可以缓存,什么时候过期,过期之后需要重新发起请求吗?

    87420

    浏览器缓存的力量

    否则把响应参数存在request header请求头中,看是否符合协商缓存,符合则返回状态码304,不符合则服务器会返回全新资源。...pragma 这个是HTTP1.0中禁用网页缓存的字段,其取值为no-cache,和Cache-Control的no-cache效果一样。 2....Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker的话,传输协议必须为 HTTPS。...因为 Service Worker 中涉及到请求拦截,所以必须使用 HTTPS 协议来保障安全。...刷新对于强缓存和协商缓存的影响 1. 当ctrl+f5强制刷新网页时,直接从服务器加载,跳过强缓存和协商缓存。 2. 当f5刷新网页时,跳过强缓存,但是会检查协商缓存。 3.

    81620

    WorkBox 之底层逻辑Service Worker

    ❞ 更多详情可以参考MDN-Cache[1] Cache API 与 HTTP 缓存的区别 如果我们以前没有使用过Cache接口,可能会认为它与 HTTP 缓存相同,或者至少与 HTTP 缓存相关。...Cache接口是一个「完全独立于」HTTP 缓存的缓存机制 用于影响HTTP缓存的任何Cache-Control配置对存储在Cache接口中的资源没有影响。 ❝可以将浏览器缓存看作是「分层的」。...❝ HTTP缓存是通过HTTP Header中指定的「缓存指令」来影响的 Cache API可以「通过 JavaScript 进行编程」 ❞ 这意味着可以根据网站的特有的逻辑来缓存网络请求的响应。...service worker的「顶级代码的任何更改」,这会影响浏览器生成的指纹。...从缓存中清除一个或多个项目,甚至删除整个缓存实例。 这个图形用户界面使检查Service Worker缓存更容易,以查看项目是否已添加、更新或从Service Worker缓存中完全删除。

    3.6K20

    前端缓存:性能的无声杀手|技术创作特训营第一期

    用户设备的性能也可能影响缓存位置的选择。性能较低的设备可能会更多地依赖于磁盘缓存,而性能较高的设备则可能更多地使用内存缓存。 用户在页面上的行为也可能影响缓存的选择。...4.3 Service Worker Service Worker 是一种在 Web 浏览器中运行的脚本,它可以作为浏览器和网络之间的代理,用于实现诸如离线访问、推送通知、后台数据同步等功能。...Service Worker 在其生命周期中会经历三个步骤:注册、安装、激活。 注意:出于安全考虑,Service worker 只能在 https 及 localhost 下被使用。...Service Worker 是创建PWA的关键组成部分之一。...PWA通常以Service Worker为核心,因为Service Worker可以用于缓存资源、处理离线请求,以及向用户发送推送通知等。

    2.1K384

    【译】理解Service Worker

    它摒弃了应用缓存声明式的设计,改用一种更加命令式或者说程序性的设计方案。 Service Worker是一种在浏览器环境当中于一个持久的背景进程当中执行代码的方法。...浏览器会找到 /sw.js 文件,然后保存在当前被访问的域名的名下。该文件包含各类事件的处理逻辑,整体定义你的Service Worker的行为。 ?...Install事件 Install事件是在你的Service Worker第一次注册以及SW文件(/sw.js)发生变化的时候触发的(浏览器会自动鉴别是否发生改变了)。...它可以用来查找一个匹配的缓存响应结果。 cache.match 会尝试为一个请求寻找匹配的缓存值。如果没能找到,这个 promise 会得到 undefined 结果。...如果你想我一样,想要在Chrome里体验这个功能,你需要真实地断开你的网络,禁用一下Wi-Fi或者关闭一下网络驱动器。

    1.6K30

    Service Worker初探

    但是浏览器是不会允许Service Worker一直处于工作状态。因为随着用户打开越来越多的注册了Service Worker的页面,性能肯定会收到影响。...CacheStorage和http缓存的关系 ? 在发送http请求的时候,请求会先到达Service Worker。...在Service Worker中,使用CacheStorage来查询是否具有可用的缓存。 如果没有,浏览器先会检测Cache-Control是否使用当前的浏览器缓存,这就是我们常说的强缓存。...如果浏览器缓存已过期,请求正式到达服务器。再去判断资源的ETag和Last-Modified有没有发生变化,决定是否使用服务器缓存。 CacheStorage不能取代过去的HTTP缓存。...当设备恢复网络的时候,服务器会马上收到请求。我们可以将返回值的errCode修改为1,尝试下Service Worker是否会发送多次请求。

    1.9K20
    领券