读书笔记(二十一):缓存

1.缓存分类
web缓存可以分为很多种,如数据库缓存、服务器缓存、CDN缓存、HTTP缓存等。
HTTP缓存是用于临时存储Web文档(HTML页面和图像),以减少服务器延迟的一种信息技术。使用的好处:

  • 使网页加载和呈现速度更快。
  • 由于减少了不必要的数据传输,因而可以节省网络流量和带宽。
  • 减少服务器的负担。

浏览器缓存按位置可分为:内存缓存(memory cache)、硬盘缓存(disk cache)、service worker等。

浏览器的资源缓存可分为硬盘缓存和内存缓存两类。当首次访问网页时,资源文件被缓存在内存中,同时也会在本地磁盘中保留一份副本。当用户刷新页面时,如果缓存的资源没有过期,就可以直接从内存中读取数据并加载。当用户关闭页面后,当前页面缓存在内存中的资源就会被清空。当用户再一次访问页面时,如果资源文件的缓存没有过期,就可以从本地磁盘加载数据并再次缓存到内存中。

按策略分,可分为:强缓存、协商缓存。

缓存的核心就是解决什么时候使用缓存,什么时候更新缓存的问题。

2.强缓存和协商缓存
强缓存:浏览器直接从本地缓存中获取数据,不与服务器进行交互。200(from cache)
协商缓存:浏览器发送请求到服务器,服务器判断是否可使用本地缓存。304(not modified)

  • 强缓存优先级最高,并且在缓存有效期内浏览器不会因为资源改动而发送请求,适用于大型且不易修改的资源文件,例如:第三方的CSS、JS文件或图片资源。如果想提高缓存的灵活性,也可以为文件名加上hash表示进行版本的区分。
  • 协商缓存灵活性高,适用于数据的缓存,考虑将数据缓存在内存中,加载速度最快并且体积小。

强制刷新时,浏览器会直接从服务器加载网页信息,跳过强缓存和协商缓存;浏览器刷新时,会跳过强缓存,但仍会进行协商缓存;其他情况两者都有效,如:页面跳转、新开窗口、前进后退。

3.相关问题

  • 禁止浏览器不缓存静态资源

使用Chrome隐私模式,在请求头设置

Cache-control:no-cache, no-store, must-revalidate

也可以在meta标签中设置

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  • max-age=60, must-revalidate 请求/响应头有什么效果
    如果资源在60s内会再次被访问,那么根据强缓存机制可以直接返回缓存资源内容;如果出超过60s,则必须发送网络请求到服务端,以验证资源的有效性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值