perl - Apache2 mod_perl Last-Modified header 被忽略

标签 perl apache2 mod-perl last-modified

我有一个 perl 生成的页面。此页面的内容每 30 分钟更改一次,因此我将 $r->set_last_modified() 设置为内容上次更改的时间。

一切正常,我可以看到正确的 header 到达我的浏览器。

当我刷新页面时,我看到浏览器在向服务器发出的请求中使用了正确的“If-Modified-Since” header ,但 Apache2 忽略了这一点并重新发送整个页面。

如何让 Apache2 正确运行并响应“HTTP/1.x 304 Not Modified”?

(从同一 Apache2 进程请求静态内容时,“last-modified”/“if-modified-since” header 会得到正确处理。)

感谢您的帮助。

编辑:我的期望错了吗?我是否必须在 Perl 脚本中显式处理入站 If-Modified-Since header ?

最佳答案

可悲的是,是的,您的期望是错误的。

当你基本上对 Apache 说“好吧,我正在处理这个请求......”时,Apache 会将一切的责任移交给你。如果您希望请求遵守 If-Modified-Since,则取决于您的代码。

面对现实,这是正确的行为,因为 Apache 无法知道 Perl 处理程序中“修改”的真正含义:最好的检查可能是查询后端数据库以获取例如,记录上的时间戳......

关于perl - Apache2 mod_perl Last-Modified header 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782084/

相关文章:

python - Django 和 MySQL - 无法打开数据库文件

linux - 为什么我的 mod_perl 脚本会卡住我的服务器?

perl - 如何在perl中上传多个文件?

字符串匹配问题

jquery - 如何在 Perl 中访问通过 Ajax jquery 传递的数组

perl - 在 golang 中使用模板 "N/a* N/a*"解压由 perl 打包的缓冲区

perl - mod_perl 与 mod_fastcgi

perl - Perl 中元音变音 "ü"的正确存储值是多少?

.htaccess -::$ 1在htaccess中是什么意思?

ubuntu - Varnish 似乎在工作,但 max-age=0