复习前端:浏览器缓存策略

简介: 笔记

13.png

1.引入浏览器缓存位置和优先级


  • Service Worker
  • 内存缓存
  • 磁盘缓存
  • 推送缓存
  • 如果上面的缓存没有命中,则会发起网络请求



2.不同缓存的差异


2.1 Service Worker

有点类似于 Web Worker,是一个独立的线程,可以在这个线程中缓存文件,当主线程需要的时候从这里读取文件。Service Worker 允许自由选择缓存哪些文件以及文件的匹配和读取规则。并且缓存是持久的。

2.2 内存缓存

即内存缓存,内存缓存不是持久化的,缓存会随着进程的释放而释放。

2.3 磁盘缓存

即硬盘缓存,与内存缓存相比,硬盘缓存具有更好的持久性和容量,会根据HTTP头的字段判断需要缓存哪些资源。

2.4 推送缓存

即 push cache,这是 HTTP/2 的内容,目前用的比较少。


3.浏览器缓存策略


3.1 强缓存(不需要向服务器索要缓存)

设置 expires

就是过期时间,例如,expires: Tue, 18 Apr 2023 06:29:41 GMT 表示缓存将在这个时间后过期。这个到期日期是一个绝对日期。如果修改了本地日期,或者本地日期与服务器日期不一致,那么缓存过期时间就会出错。

设置 Cache-Control

HTTP/1.1增加了一个新的字段,cache-control 可以通过 max-age 字段设置过期时间,cache-control: max-age=7776000 另外 cache-control 还可以设置private/no-cache 等字段。

3.2 协商缓存(需要询问服务器缓存是否过期)

last-modified

即最后修改时间,当浏览器第一次请求该资源时,服务器会在响应头中添加 last-modified。当浏览器再次请求该资源时,浏览器会在请求头中带上 if-modified-since 字段,该字段的值为上一个服务器返回的最后修改时间,服务器比较两次,如果相同则返回 304,否则返回新的资源并更新 last-modified

ETag

HTTP/1.1 中的一个新字段表示文件的唯一标识符,只要文件内容发生变化,就会重新计算ETag。缓存过程与 last-modified 相同:服务器发送 ETag 字段 -> 浏览器再次请求时发送 If-None-Match -> 如果ETag值不匹配,则文件已更改,返回新的资源并更新ETag,匹配则返回304。

last-modified 和 ETag 的比较

ETag 比 last-modified 更准确:如果打开没有修改的文件,last-modified 也会改变,last-modified 的单位时间是秒。如果文件在一秒钟内被修改,它仍然会命中缓存。

如果没有设置缓存策略,浏览器会将响应头中的Date减去 last-modified 值的10%作为缓存时间。


相关文章
|
29天前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
15天前
|
缓存 API C#
C# 一分钟浅谈:GraphQL 中的缓存策略
本文介绍了在现代 Web 应用中,随着数据复杂度的增加,GraphQL 作为一种更灵活的数据查询语言的重要性,以及如何通过缓存策略优化其性能。文章详细探讨了客户端缓存、网络层缓存和服务器端缓存的实现方法,并提供了 C# 示例代码,帮助开发者理解和应用这些技术。同时,文中还讨论了缓存设计中的常见问题及解决方案,如缓存键设计、缓存失效策略等,旨在提升应用的响应速度和稳定性。
33 13
|
25天前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
18天前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
28天前
|
前端开发 项目管理
Gitflow分支策略及其在前端工程化中的应用
Gitflow 分支策略也并非适用于所有项目。对于一些小型或简单的前端项目,可能会显得过于复杂。在实际应用中,需要根据项目的具体情况和团队的需求进行适当调整和优化。
|
28天前
|
前端开发
结合具体案例分析Gitflow分支策略在大型前端项目中的应用优势
通过这个具体案例可以看出,Gitflow 分支策略在大型前端项目中能够提供有条不紊的开发环境,保障项目的稳定性和持续发展。
|
29天前
|
前端开发
如何制定适合前端工程化的分支策略?
如何制定适合前端工程化的分支策略?
29 4
|
29天前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
27 1
|
1月前
|
存储 缓存 安全
在 Service Worker 中配置缓存策略
Service Worker 是一种可编程的网络代理,允许开发者控制网页如何加载资源。通过在 Service Worker 中配置缓存策略,可以优化应用性能,减少加载时间,提升用户体验。此策略涉及缓存的存储、更新和检索机制。
|
1月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
下一篇
DataWorks