如何发送Akamai缓存过期标头?

时间:2012-07-25 20:15:59

标签: php caching http-headers cdn akamai

我有一个网站,每次上传图片时,它都会以各种帧大小呈现。一个cron作业每10分钟运行一次,看看是否在此期间上传了任何新图像,如果是,则生成所有需要的帧。

由于此cron每10分钟运行一次,因此内容(例如文章)上线和图像可用时间之间会有一段时间。因此,在此期间会显示带有网站徽标的通用占位符图片。

由于Akamai缓存图像,当网站用户加载的图片尚未由cron呈现时,然后静态占位符将显示该图像路径,Akamai将缓存此图像。即使稍后呈现图像并且可用,用户仍将从Akamai获得缓存版本。

一种解决方案是在cron渲染它们时破坏这些图像的“年龄”。但Akamai需要大约8分钟才能回来换新的。

有没有其他的解决方案,我可以通过缓存过期标题告诉Akamai每10秒钟回来一次,直到收到新图像,一旦完成,不再回来并继续显示缓存版本?

1 个答案:

答案 0 :(得分:2)

是的,在某种程度上。如果您在服务器端和akamai设置中合并了几个步骤。

以下是概念:边缘服务器提供其拥有的内容。如果您使用缓存控制标头,例如,来自php的相应数字财产的akamai配置设置中的TTL设置将它们吹走,而是使用它们。这意味着你告诉它通过路径,文件类型,扩展名等来到源服务器的频率。然后从客户端,无论它传递给最终用户的文件是什么,边缘服务器被请求内容的频率并不重要,除非您没有在该级别缓存,而是将其回滚给您。

使用这些配置设置,您可以指定特定文件具有确切的到期时间 - 或者根本不对其进行缓存。

因此,如果在服务器端如果在页面上指定placeholder.jpg并告诉akamai根本不缓存该图像,那么每次边缘服务器收到请求时它都会返回。一旦你有了图像,那么你的页面上就不再存在placeholder.jpg,而是有sizeA.jpg,这将遵循常规的图像缓存时间。

这可能不完全理想,但除了手动清除页面之外,它是最好的,据我所知,他们没有API调用来清除可以触发的页面(加上它需要7-10分钟才能获得缓存 - 无论如何都要通过他们的n / w传播)。