在前端开发中,优化网页性能是一个重要的任务。其中,缓存是提高网页加载速度的关键因素之一。强制缓存是一种常见的缓存策略,但有时候它可能过于"暴力",而协商缓存则提供了一种更灵活的缓存机制。在本文中,我们将深入探讨协商缓存的工作原理,并提供一些 JavaScript 代码示例。
什么是协商缓存?
协商缓存是一种基于服务器和浏览器之间的通信机制,用于判断资源是否需要重新加载。它允许服务器在每次请求时根据资源的状态进行决策,从而避免不必要的数据传输和重新加载。协商缓存依赖于两个主要的 HTTP 标头:Last-Modified
和 ETag
。
-
Last-Modified:服务器在响应请求时,会在
Last-Modified
标头中返回资源的最后修改时间。浏览器在下一次请求相同资源时,会在请求的If-Modified-Since
标头中发送上一次请求中的Last-Modified
值。如果资源的最后修改时间与服务器上的实际文件相匹配,则服务器会返回一个 304 Not Modified 响应,告诉浏览器可以使用本地缓存。 -
ETag:ETag 是服务器为每个资源分配的唯一标识符,它可以是任意字符串。服务器在响应请求时,在
ETag
标头中返回资源的当前 ETag 值