【发布时间】:2009-03-25 11:09:16
【问题描述】:
我正在使用Zend_Controller_Response 对象将图像输出到浏览器。我打算将缓存应用于图像,但是某些原因导致 Cache-Control 标头被覆盖。
我的代码如下:
$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 中查看)是:
响应标头
- 日期
- 格林威治标准时间 2009 年 3 月 25 日星期三 10:34:40
- 服务器
- Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 过期
- 格林威治标准时间 2009 年 3 月 26 日星期四 10:34:41
- 缓存控制
- 无存储、无缓存、必须重新验证、后检查=0、预检查=0、最大年龄=3600
- 最后修改
- 1234872514
- 标签
- d3ef646c640b689b0101f3e03e08a524
- 内容长度
- 1452
- X-UA 兼容
- IE=EmulateIE7
- X 机器人标签
- 无索引
- 保持活跃
- 超时=15,最大值=100
- 连接
- 保持活跃
- 内容类型
- 图片/JPEG
请求标头
- 主机
- khall.####.###.######.com
- 用户代理
- Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0 .7
- 接受
- 文本/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
- 接受语言
- en-gb,en;q=0.5
- 接受编码
- gzip,放气
- 接受字符集
- ISO-8859-1,utf-8;q=0.7,*;q=0.7
- 保持活跃
- 300
- 连接
- 保持活力
- 推荐人
- http://khall.####.###.######.com/
- 饼干
- PHPSESSID=abf5056e1289d3010448107632a1c1bd
如您所见,缓存控件被修改为包括:
无存储、无缓存、必须重新验证、后检查=0、预检查=0
我怀疑是在请求中发送的会话 cookie。有谁知道发送我需要的标头的方法,但仍将会话保留在请求中?我的应用程序通过引导程序运行,并且使用 Zend_Session 处理会话。
任何帮助将不胜感激。
【问题讨论】:
标签: php zend-framework caching