我有一个在Akamai上传图片的应用程序。有时我们需要上传与之前名称相同的图像。当我这样做时,akamai不会根据时间戳刷新边缘服务器上的图像。但是,如果我重命名图像并上传,我的更改将反映在所有边缘服务器上。
是否有任何ESI指令可用于确保刷新图像。我知道这会超过使用CDN的目的,但我需要在所选内容上使用此功能。
任何帮助或方向都会很棒。
答案 0 :(得分:1)
我相信akamai支持If-Modified-Since / ETAG,它可以满足您的需求。简要地看一下文档,我发现了以下可以帮助你的子弹。
//来自Akamai Documenation //
确保您的源服务器正在发送指示对象版本的信息,以便边缘服务器可以在这些对象过期时发送条件GET请求。
如果文件自指定时间以来未更改或指定的ETag值仍然匹配,还要确保源服务器正确响应这些条件请求,并且304 Not Modified,
Cache-Control和Expires标头指示浏览器缓存对象是否以及停留多长时间。但是在刷新过期对象时,浏览器必须具有指示它可以在条件GET请求中发送到服务器的对象版本的信息。
浏览器通常可用的版本特定信息可能包括(其中包括):
Last-Modified:如果浏览器在缓存对象时收到带有对象的Last-Modified标头,则浏览器可以在刷新对象时发送If-Modified-Since标头,请求服务器发送对象(如果有)自指定日期以来已更改,如果没有,则使用304 Not Modified响应进行响应。 示例,在HTTP响应中收到: 最后修改时间:2009年2月6日星期五00:08:43 GMT
ETag:ETag是一个唯一的字符串,用于标识对象的特定版本。如果浏览器收到带有该对象的ETag标头,它可以在刷新对象时发送If-None-Match标头,如果当前ETag与请求中的ETag不匹配,则请求服务器发送该对象,或者使用304响应如果有,则不修改响应。 示例,在HTTP响应中收到: ETag:“4514b5-4824-4743e60ff96c0” 确保您的站点正在发送指示对象版本的信息,以便浏览器可以在这些对象到期时向服务器发送条件GET请求。
答案 1 :(得分:1)
如果Akamai EdgeSever将对象放在缓存中,它将在不检查原点的情况下为对象提供服务。当您更改文件名时,EdgeServer没有缓存中的对象,因为它将其视为一个新对象(EdgeServers具有缓存键的概念,它由文件名和其他一些东西组成。缓存键是EdgeServer如何在缓存中定位对象。
如果更改原点上的对象(例如,更改文件的内容,但不更改文件名),并且EdgeServer在缓存中具有该对象,则它将在不检查原点的情况下为其提供服务。 / p>
如果需要更改文件,可以通过Content Control Utility使用清除机制。登录Web控制面板,有一个GUI界面可手动清除文件。或者您可以使用SOAP API。
如果您不断更改文件并且清除成为问题,则应该查看更新配置。您可以为内容设置较低的ttl(生存时间),也可以为内容设置无存储,这将迫使EdgeServer每次都将If-Modified-Since请求发回原点。对象是请求。