强缓存和协商缓存:Web 性能优化利器
给面试官讲解强缓存和协商缓存时,可以按照以下的步骤进行:
-
强缓存:
- 强缓存是通过设置'Cache-Control'和'Expires'响应头来实现的。
- 'Cache-Control'是用来控制缓存的行为,常见的指令有'public'、'private'、'max-age'等。
- 'Expires'是一个时间戳,表示缓存的过期时间。
- 当浏览器发送请求时,如果缓存未过期,浏览器可以直接从本地缓存中获取资源,而无需再向服务器发送请求。
-
协商缓存:
- 协商缓存是通过设置'ETag'和'Last-Modified'响应头来实现的。
- 'ETag'是一个资源的唯一标识符,由服务器生成,并在每次响应时发送给浏览器。
- 'Last-Modified'是一个时间戳,表示资源的最后修改时间。
- 当浏览器发送请求时,会带上'If-None-Match'和'If-Modified-Since'请求头,分别包含上次请求时服务器发送的'ETag'和'Last-Modified'的值。
- 服务器会根据这些值判断资源是否有更新,如果没有更新,则返回'304 Not Modified'状态码,浏览器可以直接从本地缓存中获取资源。
-
强缓存和协商缓存的对比:
- 强缓存优先级高于协商缓存,即如果强缓存生效,浏览器不会向服务器发送请求。
- 强缓存通过设置响应头来控制,缓存时间由服务器决定。
- 协商缓存通过比较资源的唯一标识符和最后修改时间来判断是否需要更新缓存。
- 协商缓存相对于强缓存来说,减少了服务器的压力,但需要向服务器发送请求。
原文地址: https://www.cveoy.top/t/topic/qvir 著作权归作者所有。请勿转载和采集!