Akamai缓存未及时更新新的到期日期

时间:2015-02-06 08:04:07

标签: caching nginx webserver cdn akamai

我们的网站使用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

2 个答案:

答案 0 :(得分:0)

您是否通过点击浏览器进行测试"刷新" 当您点击浏览器刷新时,请检查"请求"头。它将显示浏览器发送If-Modified-Since以及Cache-control:0以强制重新加载对象。

如果您正在执行上述操作,正确的测试方法是按浏览器地址栏上的Enter键,在这种情况下,浏览器不会发送IMS请求标头。

答案 1 :(得分:0)

您应该检查akamai配置而不是TTL设置的来源。如果它的45天,那么你应该在原始服务器中看到任何请求。如果这只是在akamai和浏览器之间,那么请查看akamai配置中的下游缓存规则。