浏览器缓存机制

本文详细介绍了浏览器的缓存机制,包括Service Worker、Memory Cache、Disk Cache和Push Cache四种缓存位置。强调了Service Worker在缓存控制中的重要作用,并分析了强缓存(Expires、Cache-Control)和协商缓存(Last-Modified、ETag)的工作原理。此外,文章还讨论了实际使用策略和用户行为如何触发缓存。
摘要由CSDN通过智能技术生成

前言

一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。

对于一个数据请求来说,可以分为发起网络请求后端处理浏览器响应三个步骤。

浏览器缓存可以帮助我们在第一和第三步骤中优化性能:比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。

缓存位置

浏览器缓存共有四种,且有一定的优先级,当所有缓存都没有命中时才回去进行网络请求。

  1. Service Worker
  2. Memory Cache
  3. Disk Cache
  4. Push Cache

Service Worker

Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker的话,传输协议必须为 HTTPS。因为 Service Worker 中涉及到请求拦截,所以必须使用 HTTPS 协议来保障安全。Service Worker 的缓存与浏览器其他内建的缓存机制不同,它可以让我们自由控制缓存哪些文件、如何匹配缓存、如何读取缓存,并且缓存是持续性的。

  1. 注册Service worker :在你的index.html加入以下内容
/* 判断当前浏览器是否支持serviceWorker */
    if ('serviceWorker' in navigator) {
   
        /* 当页面加载完成就创建一个serviceWorker */
        window.addEventListener('load', function () {
   
            /* 创建并指定对应的执行内容 */
            /* scope 参数是可选的,可以用来指定你想让 service worker 控制的内容的子目录。 在这个例子里,我们指定了 '/',表示 根网域下的所有内容。这也是默认值。 */
            navigator.serviceWorker.register('./serviceWorker.js', {
   scope: './'})
                .then(function (registration) {
   
 
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值