我正在使用Zend_Controller_Response对象将图像输出到浏览器。我打算将缓存应用于镜像,但是某些原因导致Cache-Control header 被覆盖。

我的代码如下:

$this->getResponse()
    ->setHeader('Last-Modified', $modifiedTime, true)
    ->setHeader('ETag', md5($modifiedTime), true)
    ->setHeader('Expires', $expires, true)
    ->setHeader('Pragma', '', true)
    ->setHeader('Cache-Control', 'max-age=3600')
    ->setHeader('Content-Type', $mimeType, true)
    ->setHeader('Content-Length', $size, true)
    ->setBody($data);

输出(在Firebug中查看)为:

响应标题



请求 header



如您所见,缓存控件被修改为包括:



我怀疑是在请求中发送的 session cookie。有人知道一种发送我所需的 header 的方法,但仍将 session 保留在请求中吗?我的应用程序通过 bootstrap 运行,并且使用Zend_Session处理 session 。

任何帮助,将不胜感激。

最佳答案

从Zend_Controller文档的10.9. The Response Object部分



您遇到的问题是,将max-age = 3600追加到了高速缓存控制 header 中,而不是替换它。尝试将 $ replace 参数设置为 true

09-28 08:10