Frontend Caching Notes

Frontend Caching Notes

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

本文讨论了缓存机制的不同策略,包括绝对过期时间、相对过期时间、强缓存和协商缓存。介绍了Cache-Control、Expires、Last-Modified等HTTP头部的作用,以及如何通过设置这些头部来优化资源的缓存和加载效率,并提到了一些与跨域请求相关的配置。

🎯

关键要点

  • 缓存的绝对过期时间会导致缓存失效,Expires受客户端时间影响不精准。

  • max-age和s-maxage用于控制缓存的相对过期时间,s-maxage优先级高于max-age。

  • no-cache和no-store指令用于控制缓存行为,no-store表示不进行任何缓存。

  • Last-Modified和If-Modified-Since用于判断资源是否更新,304 Not Modified表示资源未修改。

  • 缓存新鲜度的计算公式为max-age或(expires - date),并且响应时间和停留缓存时间也会影响缓存使用期。

  • 启发式缓存通过date与last-modified的差值计算缓存时间。

  • 强缓存失效后,浏览器可能启用协商缓存,但并不一定。

  • Access-Control-Allow-Origin用于指定允许访问的域名,涉及跨域请求的配置。

  • JS脚本和CSS资源的缓存策略有所不同,异步加载的资源更可能被存入Disk Cache。

  • preload和prefetch用于优化资源加载,前者用于立即加载,后者用于预提取可能用到的资源。

延伸问答

什么是绝对过期时间和相对过期时间?

绝对过期时间是指缓存在特定时间后失效,而相对过期时间则是通过max-age和s-maxage控制缓存的有效期。

如何使用Cache-Control和Expires优化缓存?

通过设置Cache-Control和Expires头部,可以控制缓存的行为和过期时间,从而提高资源的加载效率。

什么是强缓存和协商缓存?

强缓存是在缓存有效期内直接使用缓存,而协商缓存是在强缓存失效后,通过请求服务器确认资源是否更新。

Last-Modified和If-Modified-Since的作用是什么?

Last-Modified用于指示资源的最后修改时间,而If-Modified-Since用于判断资源是否更新,返回304 Not Modified表示未修改。

如何计算缓存的新鲜度?

缓存的新鲜度可以通过max-age或(expires - date)计算,响应时间和停留缓存时间也会影响缓存的使用期。

跨域请求中如何配置缓存?

可以通过设置Access-Control-Allow-Origin头部来指定允许访问的域名,同时需要配置相关的凭证和方法。

➡️

继续阅读