cache_control对于cdn静态缓存来说,是必不可少的观察指标。这个字段涉及三个方面,客户端,缓存服务器,服务端。三者的关系如下图:
,缓存服务器接收到客户端和服务器端的请求以后,会根据两端的要求来调整对于资源的缓存情况。就是说通常两端都有控制请求资源是否缓存的能力。但是客户端请求的资源是由服务器提供的,所以客户端和服务端对于资源的控制能力是不一样的,比如客户端控制的行为大多是我要什么样的资源,要实时更新的资源或者可以接受缓存一段时间的资源。服务端控制的行为主要是我的资源能不能让缓存服务器缓存,可以缓存10天,或者不能缓存我的资源。基本两端需求的多样化,cache_control字段除了是否缓存资源之外还提供了其他的字段。以下是能支持资源的列表:
客服端对资源缓存的控制 服务端对资源缓存的限制从上图字段控制的数量可以看出,服务器对资源是否缓存的控制条目更多。下面一一来介绍下各个字段。
看客户端想要的资源缓存情况,首先看no-cache,no-store,no-transform。这三个参数没有后面的参数,他们是明确和缓存服务器要什么样的资源。
no-cache 客户端对缓存服务器说,我不要cache的资源,缓存服务器收到请求以后,就需要去源站拿到最新的资源。
no-store 客户端对缓存服务器说,我的资源不让你缓存。
no-transform 客户端我要的资源类型,你不能更改他的类型。
例子
磁盘命中
磁盘命中磁盘命中,当访问一个静态资源的时候,cdn边缘节点在这个资源没有被经常访问的时候,是磁盘命中,如果访问频率高,会触发内存命中。内存命中客户端拿到资源的速度会快。
资源配置的问题,可以通过添加 add_header Cache-Control max-age=3600;这个指令完成,CDN产商,对于 cache-control 为 no-cache的,一般都不会缓存。需要源站主动设置 max-age,CDN平台对于有 max-age的,可以进行修改。
hitcache字段: -,DYNAMIC|CHARGE|NOTLAST
网友评论