【问题标题】:Add expires header without mod_expires?添加没有 mod_expires 的过期标头?
【发布时间】:2010-09-02 10:05:31
【问题描述】:

我知道我可以使用 mod_expires 添加过期标头。但是,如果 Apache 服务器没有安装 mod_expires 并且我不想通过像 PHP 这样的脚本语言来路由对文件的访问,我该怎么办?

【问题讨论】:

    标签: apache .htaccess mod-expires


    【解决方案1】:

    您可以使用mod_header 手动设置标题字段:

    Header set Expires "..."
    

    但由于Expires 需要absolute time,请使用Cache-Controlmax-age 参数作为相对于访问时间的时间:

    Header merge Cache-Control max-age=3600
    

    【讨论】:

    • 所以你的意思是不要使用 Expires 标头,而是使用 Cache-Control 标头?
    • 有效,仅使用 Cache-Control 而不是 Expires。
    【解决方案2】:

    这应该告诉浏览器在后续访问时刷新页面。过期日期必须是过去...您可以使用 PHP 设置日期以使其“只是”过去,或者将其保留为您找到此答案的日期!!!

    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Thu, 2 Sep 2010 05:00:00 GMT");
    

    更新:抱歉 - 我错过了关于通过 PHP 路由文件的句子中的“不要”!您还可以使用这些 HTML 元标记:

    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="expires" content="Thu, 2 Sep 2010 05:00:00 GMT">
    

    【讨论】:

    • 对不起,这不起作用,因为我需要将 Expires 标头添加到非 html 文件。但是好吧,我忘了在我最初的问题中写这个。
    【解决方案3】:

    如果你有静态的 Expires 标头,下面会在你的 js 和 css 文件中添加一个 Expires 标头:

    <FilesMatch "\.(js|css)$">
    Header set Expires "Fri, 01 Jan 2010 00:00:00 GMT"
    </FilesMatch>
    

    【讨论】:

    • 问题是我需要根据当前的访问时间来计算未来的日期,我不能使用固定的日期。所以这行不通。
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 2012-12-08
    • 2011-10-02
    • 2016-12-06
    • 2014-07-19
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多