【问题标题】:Apache2 mod_perl Last-Modified header ignoredApache2 mod_perl Last-Modified 标头被忽略
【发布时间】:2009-04-23 14:44:49
【问题描述】:

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

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

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

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

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

感谢您的帮助。

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

【问题讨论】:

    标签: perl apache2 mod-perl last-modified


    【解决方案1】:

    很遗憾,是的,你的期望是错误的。

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

    面对现实,这是正确的行为,因为 Apache 无法知道您在 Perl 处理程序中的“修改”/真正/是什么意思:最好的检查是去查询您的后端数据库记录上的时间戳,例如....

    【讨论】:

    • 是的,我想这是有道理的 :)
    【解决方案2】:

    Apache 在处理请求时不会存储您上次修改的值。因此,为了确定是否修改了某些内容,它必须运行您的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 2010-10-23
      • 2011-04-23
      • 2019-04-15
      • 2010-12-28
      相关资源
      最近更新 更多