php - Phalcon,生成图像的 HTTP 缓存

标签 php apache http caching phalcon

我正在编写一个使用 Phalcon 生成图像缩略图的网络服务。

我尝试对它进行 HTTP 缓存。

这是我的代码:

$seconds = 43200;
$expireDate = new DateTime();
$expireDate->modify("+ $seconds seconds");

$finfo = new finfo(FILEINFO_MIME_TYPE);
$app->response->setHeader('Content-Type', 'Content-type: ' . $finfo->buffer($data));

$app->response->setExpires($expireDate);
$app->response->setHeader('Pragma', 'cache');
$app->response->setHeader('Cache-Control', "private, max-age=$seconds");
$app->response->setHeader('E-Tag', md5(filemtime($path)));
$app->response->setHeader('Last-Modified', gmdate('D, d M Y H:i:s', filemtime($path)).' GMT');

$app->response->sendHeaders();
echo $data;

图像正确显示。但是当你刷新它时,http 代码总是 200,我尝试另一个网站的另一个图像,我得到了 200、304、304、304...

这是我的原始响应 header :

HTTP/1.1 200 OK
Date: Thu, 27 Aug 2015 18:38:41 GMT
Server: Apache/2.4.10 (Debian)
Expires: Fri, 28 Aug 2015 06:38:41 GMT
Pragma: cache
Cache-Control: private, max-age=43200
E-Tag: 501a8d62f276eb5b165b8a709bf4e5b4
Last-Modified: Sun, 05 Jul 2015 20:34:14 GMT
Keep-Alive: timeout=5, max=90
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/jpeg

有人看到我做错了什么了吗?

提前致谢。

最佳答案

当浏览器询问缓存图像是否仍然有效时,您的 php 代码需要返回 304 Not Modified header 。在再次发送图像之前,在脚本顶部放置一个 if 语句来处理该请求。

您总是在发送图像,这就是浏览器显示 200 响应的原因。

关于php - Phalcon,生成图像的 HTTP 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257247/

相关文章:

c# - HTTPClient 在成功之前获得两个 401(发送错误的 token )

angular - 如何测试依赖于另一个服务的服务/组件又依赖于 Http 服务?

php - 从表中选择 1,奇怪的 print_r 结果

php - php 扩展崩溃 - 将内存地址转换为行号

apache - 如何解决此 apache 错误日志问题?模组放气

python - 如何提取在 python 中渲染 HTML 页面期间获得的 url 列表?

php从mysql解码二进制(16)ip

php - 格式化网页以进行打印

java - 如何使用CMD启动停止tomcat服务器?

php - 如何在另一台本地计算机上访问我的 Wamp 服务器