HTTP:强缓存优化实践

强缓存:浏览器不会向服务器发送任何请求,直接从本地缓存中读取文件

强缓存是指浏览器在向服务器请求资源时,判断本地是否存在该资源的缓存,并判断是否过期。
如果本地缓存未过期,浏览器就直接使用本地缓存,而不会向服务器发送请求。
这样可以减少对服务器的请求,加快页面加载速度。

用流程图描述如下:
强缓存流程图

强缓存通常通过HTTP响应头的 ExpiresCache-Control 实现:

1、Expires :服务端返回的响应中包含一个 Expires 头,指定资源缓存的过期时间。例如:

Expires: Wed, 21 Oct 2024 07:28:00 GMT

浏览器中获取到的状态码有两种,优先级上 memory cache(内存缓存) > disk cache(磁盘缓存)

// 资源存储在内存中的缓存。这样的缓存读取速度非常快,但相对容量较小。
1、 Status Code: 200 OK (form memory cache)

// 资源存储在硬盘上的缓存。磁盘缓存可以存储更多的数据,但相对读取速度较慢
2、 Status Code: 200 OK (from disk cache)

浏览器在接收到带有 Expires 头的响应后,会将资源保存在缓存中,并在过期时间之前不会再次向服务器发送请求。
因为 Expires 值是一个固定时间,因此会受本地时间的影响,如果在缓存期间我们修改了本地时间,可能会导致缓存失效。

2、Cache-Control :使用 Cache-Control 头的 max-age 来设置资源的过期时间(单位为秒)。例如:

Cache-Control: max-age=3600

这表示资源将在 3600 秒(1 小时)后过期。浏览器收到包含 max-age 的响应后,会根据该值在本地进行缓存,并在过期之前不再向服务器发送请求该资源。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP缓存是一种优化网络性能的重要技术。而在HTTP缓存中,最佳实践有以下几个方面: 1. 缓存策略:最佳的HTTP缓存需要根据不同的资源类型和内容特点制定合适的缓存策略。对于静态资源如样式表、图片等,可以使用长时间过期的缓存策略,通过设置合适的Cache-Control头部字段来指定缓存策略;对于动态生成的内容,可以根据实际情况设置相对较短的过期时间或者使用条件请求来实现缓存更新。 2. 缓存验证:使用缓存验证机制可以避免无效缓存的情况发生。服务器可以通过Etag或者Last-Modified字段来生成缓存验证信息,并在客户端发送请求时带上这些验证信息,服务器端通过对比验证信息来判断缓存是否有效,从而决定是否返回304 Not Modified状态码,减少网络传输。 3. Vary头部字段:对于经常有变化的资源,如根据请求头信息返回不同内容的资源,可以使用Vary头部字段来标识不同的版本,并让代理服务器根据请求头信息进行区分缓存。 4. 压缩缓存:在进行缓存存储时,可以对资源进行压缩以减小存储空间和传输的体积。常见的压缩方式有Gzip或者Deflate等,可以减少传输时间和带宽消耗。 5. 缓存失效:对于不再需要的缓存,及时进行缓存失效。当资源内容发生变化、缓存时效到期或者缓存区空间不足时,及时清除失效的缓存,以保证新鲜的内容能够及时被更新。 综上所述,最佳的HTTP缓存实践需要综合考虑资源类型、内容特点以及网络环境等因素,通过合适的缓存策略、验证机制、压缩和及时的缓存失效等措施,来实现更高效的网络传输和页面加载速度的提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值