2

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

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

由于 Akamai 缓存图像,因此当站点用户加载具有尚未由 cron 呈现的图像的页面时,将为该图像路径显示一个静态占位符,并且 Akamai 将缓存此。即使图像稍后渲染并且可用,用户仍会从 Akamai 获得缓存版本。

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

是否有任何其他解决方案,我可以通过缓存过期标头告诉 Akamai 每 10 秒返回一次,直到收到新图像,一旦完成,就不再返回并继续显示缓存版本?

4

1 回答 1

2

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

概念如下:边缘服务器提供它拥有的内容。如果您使用缓存控制标头,例如来自 php,则相应数字属性的 akamai 配置设置中的 TTL 设置会将它们吹走,而是使用它们。这意味着您通过路径、文件类型、扩展名等告诉它多久访问一次您的源服务器。然后从客户端,它提供给最终用户的任何文件,边缘服务器被请求内容的频率并不重要,除非您不在该级别缓存,将其回滚给您。

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

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

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

于 2012-09-26T23:37:02.253 回答