乐闻世界logo
搜索文章和话题

浏览器有哪些缓存策略?

浏览30
8月5日 12:50

浏览器缓存策略主要是用于提高网页加载速度,减少服务器压力以及节省带宽。以下是几种主要的浏览器缓存策略:

  1. 强缓存(Strong Cache)

    • Expires:这是HTTP/1.0中使用的头信息,用来指定资源到期的时间。如果请求的时间小于Expires的时间,浏览器会直接使用缓存中的资源,而不会向服务器发起请求。
    • Cache-Control:在HTTP/1.1中引入,比Expires更灵活。常用的指令包括max-age(资源最大有效时间)、no-cache(每次都要向服务器确认)、no-store(完全不缓存),等等。若设置了max-age,且缓存时间未过期,则浏览器会直接使用本地缓存。
  2. 协商缓存(Negotiation Cache)

    • Last-ModifiedIf-Modified-Since:服务器在响应中加入Last-Modified标头指明资源最后修改时间,浏览器再请求时通过If-Modified-Since将这个值发送给服务器,由服务器判断资源是否有更新。
    • ETagIf-None-Match:ETag是资源的唯一标识符,当资源有变动时ETag也会变。浏览器存储资源的ETag,并在下次请求时通过If-None-Match发送给服务器,以检查资源是否有更新。

    若在协商缓存中服务器确认内容没有更新,则服务器会返回304状态码,浏览器就会使用本地缓存;如果内容更新了,则会返回200状态码和新的资源内容。

  3. 预缓存(Pre-Caching)

    • Service Workers:通过Service Workers可以拦截网络请求,并动态地缓存或者恢复资源。这允许创建有效的离线体验,并且可以精细控制缓存策略。
  4. 内存和硬盘缓存 浏览器通常将资源缓存在内存或硬盘中:

    • 内存缓存:缓存存储在内存中,访问速度快,但只在浏览器会话期间有效。
    • 硬盘缓存:缓存存储在硬盘上,访问速度慢一些,但即使关闭浏览器后依然可以使用。

举个例子,假设您访问了一个前端的网站,网站的CSS文件设置了强缓存,Cache-Control设置为max-age=3600,这意味着在接下来的一个小时内,如果您再次访问该网站,浏览器就会直接使用本地缓存的CSS文件,而不需要再次请求服务器,这样就能加快页面的加载速度。

而对于网站的新闻部分,可能会使用协商缓存,每次访问时通过ETag或者Last-Modified信息检查内容是否有更新,以确保用户总是看到最新的内容,同时在内容没有更新的情况下减少不必要的资源传输。

标签:前端Browser