php - 如何发送 Akamai 缓存过期 header ?

标签 php caching http-headers cdn akamai

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

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

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

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

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

最佳答案

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

概念如下:边缘服务器提供其拥有的内容。如果您使用缓存控制 header (例如,来自 php),则相应数字 Assets 的 akamai 配置设置中的 TTL 设置会破坏它们,并使用这些 header 。这意味着您可以通过路径、文件类型、扩展名或其他方式告诉它访问源服务器的频率。然后从客户端来看,无论它拥有什么文件,它都会传递给最终用户,并且边缘服务器请求内容的频率并不重要,除非您不在该级别进行缓存,将其回滚给您。

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

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

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

关于php - 如何发送 Akamai 缓存过期 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657911/

相关文章:

java - 能否将 GWT 配置为在用户主文件夹以外的其他位置创建缓存文件?

rest - Symfony2 - 如何在测试 REST API 时获取自定义 header

node.js - s3.getSignedUrl ResponseContentDisposition 参数不起作用

带有计分功能的 PHP 问答游戏

PHP 库中的 Javascript 依赖项

hadoop - 为什么HDFS客户端会将文件数据缓存到一个临时的本地文件中?

iis - IIS7 中的 GZip 压缩不起作用,但内容编码 header 设置为 gzip

php - 我对查找表的查询是否太多,有人可以提出替代方案吗?

php - $_GET 创建产品页面

php - 如何从 PHP 清除 Opencart 中的缓存