在图片URL后面添加一个参数以清理缓存

在图片URL后面添加一个参数(如a=1)以清理缓存的原理: HTTP缓存

HTTP缓存是一种优化技术,用于减少重复的网络请求和降低服务器的负载。当浏览器请求一个资源(如图片)时,它会首先检查本地缓存中是否已经有这个资源的副本。如果有,并且这个资源被认为是“新鲜”的(即没有过期,或者通过验证服务器上的版本仍然是相同的),那么浏览器就会直接从缓存中加载这个资源,而不是从服务器重新下载。

在图片URL后面添加时间戳,可以清理缓存并强制浏览器从服务器加载最新资源。由于每次请求时生成的时间戳都不一样(即修改了URL),因此浏览器会认为这是一个新的请求,不会从缓存中加载资源,而是会向服务器发送请求以获取最新的资源。因此,它通常只在资源确实更新但URL没有改变的情况下才使用。

HTTP协议

一、缓存头(Cache Headers)

缓存头是HTTP请求和响应中包含的元数据,用于控制缓存的行为。关键的缓存头包括:

  • Expires:由服务器发送,定义了响应过期的时间,告诉浏览器在过期时间之前可以继续使用缓存的副本。
  • Cache-Control:这是一个比Expires更强大的缓存控制指令,它可以设置缓存的具体行为,如max-age(资源可被缓存的最长时间)、no-cache(强制每次请求都向服务器验证缓存的有效性)、no-store(禁止一切缓存)等。
  • Last-Modified:服务器响应请求时,会告诉浏览器资源的最后修改时间。
  • ETag:由服务器发送,是一个特定资源的版本标识符,用于比较资源的版本是否发生变化。

二、缓存策略

  • 强制缓存:当缓存数据未失效时,直接使用缓存数据,不再请求服务器。这主要依赖于Expires和Cache-Control头。
  • 协商缓存:当缓存数据已过期但可能仍然有效时,向服务器发送请求并附带验证信息(如If-Modified-Since和If-None-Match),由服务器判断缓存是否仍然有效。如果有效,服务器返回304 Not Modified响应,告知客户端继续使用缓存数据。

三、缓存命中与失效

  • 缓存命中:当浏览器再次请求相同的资源时,如果该资源已经在缓存中可用且未过期(或经协商后确认仍然有效),则浏览器会直接从缓存中获取资源,而不是向服务器发送请求。
  • 缓存失效:当浏览器无法从缓存中找到请求的资源,或缓存资源已过期且经协商后确认无效时,浏览器将向服务器发送请求以获取最新的资源。

四、缓存回收与一致性

  • 缓存回收:当浏览器需要更新缓存中的资源时,可以通过发送带有验证信息的请求来避免不必要的网络传输。
  • 缓存一致性:在分布式系统中,多个缓存节点可能存储着相同资源的副本。为了保证缓存一致性,需要使用一些机制来同步不同缓存节点之间的数据。

五、缓存替换策略

缓存空间是有限的,因此需要有一种策略来替换旧的缓存条目以容纳新的条目。常见的缓存替换策略包括最近最少使用(LRU)、最不经常使用(LFU)等。

六、代理缓存与CDN缓存

  • 代理缓存:在分布式系统中,代理服务器可以作为客户端和服务器之间的中间代理,帮助缓存和转发请求。
  • CDN缓存:内容分发网络(CDN)可以将资源缓存在全球各地的边缘服务器上,以便更快地向用户提供服务。CDN缓存技术可以减少网络延迟和提高用户体验,同时减轻原始服务器的负载。

七、浏览器缓存

浏览器负责管理本地缓存,包括存储HTTP响应、HTML文档中的链接资源等。浏览器可以根据HTTP头中的Cache-Control指令来决定如何处理缓存请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值