CDN(Content Delivery Network)即内容分发网络,是一种通过将网站内容缓存到全球多个服务器节点上,使用户能够从最近的节点获取内容,从而提高网站访问速度和性能的技术,在CDN中,协商缓存是一种重要的缓存机制,用于确定客户端缓存的资源是否仍然有效,是否需要从服务器重新获取资源。
1、首次请求:当用户首次访问网站时,浏览器向源服务器发起请求,源服务器响应请求并返回资源,同时在响应头中包含资源的缓存标识(如Last-Modified或ETag)。
2、后续请求:用户再次访问相同资源时,浏览器会在请求头中携带上次获取的缓存标识(如If-Modified-Since或If-None-Match),向CDN节点发起请求。
3、CDN节点处理:CDN节点收到请求后,根据请求头中的缓存标识与自己缓存的资源进行比较。
4、缓存验证:如果CDN节点判断缓存中的资源未过期且与请求头中的缓存标识匹配,则返回304 Not Modified状态码,告知浏览器可以使用本地缓存的资源,否则,CDN节点会向源服务器发起请求获取最新资源,并在返回给用户的同时更新自己的缓存。
1、实时同步:协商缓存可以确保前端页面与后端数据实时同步,避免因缓存导致的数据显示不一致问题。
2、减少冗余传输:只有当资源发生变化时,服务器才会发送新的资源给浏览器,减少了不必要的网络传输和带宽消耗。
3、提高用户体验:通过减少数据传输量和等待时间,提高了页面加载速度和响应性能,从而提升了用户体验。
1、增加服务器负担:服务器需要处理额外的请求和比较资源是否发生变化的逻辑,这增加了服务器的负担。
2、需要正确的HTTP头部设置:服务器需要正确配置If-Modified-Since或If-None-Match字段才能实现协商缓存,如果配置不当,可能会导致缓存机制无法正常工作。
1、静态资源缓存:对于不经常变化的静态资源(如图片、CSS文件、JavaScript文件等),可以使用协商缓存来减少重复下载。
2、缓存:对于一些动态生成但变化不频繁的内容(如商品列表页、新闻文章页等),也可以结合协商缓存来提高访问速度。
3、移动应用加速:在移动应用中,由于网络环境复杂多变,使用协商缓存可以减少因网络波动导致的重复请求和数据不一致问题。
缓存控制字段 | 说明 | 示例值 |
Cache-Control | 公共缓存控制字段,用于指定请求和响应遵循的缓存机制 | public, max-age=3600 |
Expires | 一个特定的日期/时间,指示响应过期的时间 | Expires: Wed, 21 Oct 2023 07:28:00 GMT |
Last-Modified | 资源的最后修改时间,用于验证资源是否被修改 | Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT |
ETag | 资源的唯一标识符,通常是一个哈希值或版本号 | ETag: “50ab1c1d2e3f4g5h” |
1、什么是CDN协商缓存?
答:CDN协商缓存是指在浏览器向CDN服务器发送请求时,通过HTTP请求头中的If-Modified-Since或If-None-Match字段来告诉服务器如果资源未修改,则返回304状态码,表示资源未发生变化的过程,CDN服务器收到请求后,会检查资源的修改时间或内容指纹,并与浏览器端发送的进行比较,如果未发生变化,则返回304状态码;否则返回新的资源。
2、CDN协商缓存有哪些优点和缺点?
答:优点包括实时同步、减少冗余传输和提高用户体验;缺点包括增加服务器负担和需要正确的HTTP头部设置。