2011-02-17 51 views
0

我有一个应用程序可以在Akamai上上传图片。有时候我们有必要上传与之前相同名字的图片。当我这样做时,akamai不会根据时间戳刷新边缘服务器上的映像。但是,如果我重命名图像并上传,我的更改将反映在所有边缘服务器上。在Akamai边缘服务器上刷新上传的同名图片

是否有任何ESI指令可用于确保图像刷新。我知道这会超过使用CDN的目的,但我需要选定内容上的此功能。

任何帮助或方向将是伟大的。

回答

1

我相信akamai支持If-Modified-Since/ETAGs,它应该能够满足您的需求。简要地看一下文档,我发现了以下应该帮助你的项目符号。

//从Akamai的Documenation //

确保您的源服务器发送指示对象的版本,这样,当这些对象过期边缘服务器可以发送一个条件GET请求信息。

还要确保您的原始服务器正确响应这些条件请求,如果该文件自指定的时间以来没有更改过,或者指定的ETag值仍然匹配,则304响应未修改。

Cache-Control和Expires标题指示浏览器是否以及多长时间缓存一个对象。但是,刷新过期对象时,浏览器必须具有指示可以在条件GET请求中发送给服务器的对象版本的信息。

通常可获得的浏览器特定于版本的信息可以包括(除了别的以外):

上次修改:如果高速缓存时,它的浏览器接收与所述对象的Last-Modified头,浏览器可以发送一个If-Modified-Since标头刷新对象时,请求服务器发送该对象,如果该对象自指定日期以来已更改,或者如果未响应则返回304未修改响应。 例如,在HTTP响应中收到: Last-Modified:Fri,2009年2月6日00:08:43 GMT

ETag:ETag是一个唯一字符串,用于标识对象的特定版本。如果浏览器接收到带有该对象的ETag头部,则在刷新对象时可以发送If-None-Match头部,请求服务器在其当前ETag与请求中的ETag不匹配时发送对象,或者用304如果没有修改响应。 在HTTP响应中收到示例: ETag:“4514b5-4824-4743e60ff96c0” 确保您的站点发送的信息指示对象的版本,以便浏览器可以在服务器发送条件GET请求时那些对象到期。

1

如果Akamai EdgeSever在缓存中拥有该对象,它将为该对象提供服务,而不用检查源。当您更改文件名时,EdgeServer在缓存中没有该对象,因为它将其视为新对象(EdgeServers具有缓存键的概念,该缓存键由文件名和其他内容组成。缓存键是EdgeServer如何在高速缓存中查找对象)。

如果您更改原点上的对象(例如更改文件的内容但不更改文件名),并且EdgeServer具有缓存中的对象,它将在不检查原点的情况下提供对象。

如果您需要更改文件,可以通过Content Control Utility使用清除机制。登录到Web控制面板,并有一个GUI界面来手动清除文件。或者你可以使用SOAP API。

如果您经常更改文件并且清除成为问题,您应该查看更新您的配置。您可以为您的内容设置较低的ttl(生存时间),或者您可以为内容设置一个无存储区,这将强制EdgeServer每次发送一条If-Modified-Since请求回到您的原始位置对象是请求。

+0

谢谢,etags帮助:) – Abhishek 2011-04-28 09:41:32