【发布时间】:2015-07-01 07:21:11
【问题描述】:
我们的网站使用 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 天后,我们在浏览器中看到了这样的内容:
Cache-Control:public, no-cache, must-revalidate.
基本上,数据并没有在浏览器端缓存,并且对于每个请求,akamai 都会向我们的服务器发送一个请求。
X-Cache:TCP_IMS_HIT from a203-92-39-77.deploy.akamaitechnologies.com (AkamaiGHost/7.1.0.2-14656242) (-)
所以,我们将 nginx conf 更改为 expires 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 不应再次调用我们的服务器,但我仍然看到数据未缓存且 akamai 状态仍为:
X-Cache:TCP_IMS_HIT
我现在唯一能想到的是,由于我们没有配置服务器,所以当 akamai 调用后端服务器时,它会发送文件未更改的状态,因此我应该将状态与图像一起发送为 200。我的理解正确吗?有没有办法只更新到期数据而不发送完整数据。
谢谢, 尼特什
【问题讨论】:
标签: caching nginx webserver cdn akamai