HTTP缓存策略 | 青训营

107 阅读2分钟

HTTP缓存策略是指服务器和客户端之间通过HTTP协议来控制缓存的行为和机制。用于减少网络请求,提高网站性能和用户体验。

以下是一些我搜寻的简单的常见的HTTP缓存策略:

  1. Expires(过期时间): 服务器通过在响应头中添加Expires字段来指定资源的过期时间。浏览器在接收到响应后,会将该资源缓存起来,并在过期时间之前直接使用缓存。例如:

    Expires: Wed, 21 Aug 2023 12:00:00 GMT
    
  2. Cache-Control(缓存控制): Cache-Control字段用于指定缓存行为的各种选项。常见的选项包括:

    • public:可以被所有用户缓存,包括代理服务器。
    • private:只能被单个用户缓存,不包括代理服务器。
    • no-cache:需要先与服务器确认资源是否发生了变化,然后才能使用缓存。
    • max-age:指定资源的最大缓存时间,以秒为单位。例如:max-age=3600表示资源在1小时后过期。
    • s-maxage:类似于max-age,但仅适用于代理服务器缓存。

    示例:

    Cache-Control: public, max-age=3600
    
  3. Last-Modified(上次修改时间)和If-Modified-Since: 服务器在响应头中添加Last-Modified字段,表示资源的最后修改时间。浏览器在后续请求中,通过在请求头中添加If-Modified-Since字段,将上次获取资源的修改时间发送给服务器。如果资源自上次修改时间以来未发生更改,服务器返回304状态码,告诉浏览器继续使用缓存。示例:

    Last-Modified: Wed, 14 Aug 2023 10:00:00 GMT
    If-Modified-Since: Wed, 14 Aug 2023 10:00:00 GMT
    
  4. ETag(实体标签)和If-None-Match(如果无标签匹配): 服务器在响应头中添加ETag字段,表示资源的唯一标识符。浏览器在后续请求中,通过在请求头中添加If-None-Match字段,将上次获取资源的标识符发送给服务器。如果资源的标识符与服务器上的相同,表示资源未发生更改,服务器返回304状态码,告诉浏览器继续使用缓存。示例:

    ETag: "abc123"
    If-None-Match: "abc123"
    

这些是常见的HTTP缓存策略,可以通过在服务器端设置响应头字段来实现。通过合理配置缓存策略,可以提高网站性能并降低服务器负载。