我们的网站使用akamai-CDN来提供图像,我们的源服务器是nginx。 在nginx中,我们最初将到期时间设置为修改日期+ 45天。
location ~* \. (jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js|ttf) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires modified +45d;
}
但45天后,在浏览器中我们看到了类似的内容:
缓存控制:公共,无缓存,必须重新验证。
基本上,数据未在浏览器端缓存,并且对于每个请求,akamai都会向我们的服务器发送请求。
X-Cache:TCP_IMS_HIT from a203-92-39-77.deploy.akamaitechnologies.com (AkamaiGHost/7.1.0.2-14656242) (-)
所以,我们将nginx conf改为45d:
location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js|ttf) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires 45d;
}
这有效应该会看到akamai缓存和浏览器缓存用45d更新,因此akamai不应该再次调用我们的服务器,但我仍然看到数据没有被缓存,而且仍然是以下状态:
X-Cache:TCP_IMS_HIT
我现在唯一可以想到的是,因为我们没有配置,因为我们没有专门配置服务器,当akamai调用后端服务器时,它将发送文件未更改的状态,因此我应该将状态发送为200以及图像。我的理解是否正确?有没有办法只更新到期数据而不发送完整的数据。
谢谢, Nitesh
答案 0 :(得分:0)
您是否通过点击浏览器进行测试"刷新" 当您点击浏览器刷新时,请检查"请求"头。它将显示浏览器发送If-Modified-Since以及Cache-control:0以强制重新加载对象。
如果您正在执行上述操作,正确的测试方法是按浏览器地址栏上的Enter键,在这种情况下,浏览器不会发送IMS请求标头。
答案 1 :(得分:0)
您应该检查akamai配置而不是TTL设置的来源。如果它的45天,那么你应该在原始服务器中看到任何请求。如果这只是在akamai和浏览器之间,那么请查看akamai配置中的下游缓存规则。