【问题标题】:IIS 7.5 How do you add a Dynamic HTTP Expires HeaderIIS 7.5 如何添加动态 HTTP 过期标头
【发布时间】:2012-06-05 05:34:03
【问题描述】:

在 IIS 7.5 中,您可以添加静态 HTTP 响应标头,但我想添加一个“过期”标头,该标头始终指定未来 7 天的日期。

我正在运行 php 5.4,所以我想要一个可以通过编辑 web.config 文件而不是一些 c# 代码解决方案来做到这一点的解决方案。

我知道如何使用 php 添加标头,但这对静态图像文件的 http 标头(jpg、gif、png 等)没有帮助。

标题应如下所示:

到期:格林威治标准时间 2012 年 5 月 31 日星期四 10:59:25

我怎样才能让它动态地始终显示未来 7 天的日期和时间?

编辑:

请注意,我的 php 文件中有我想要的 expires 标头:

http://web-sniffer.net/?url=http%3A%2F%2Fwww.bestds.com

但是,我无法为 png 文件上的“Expires”键指定一个提前 7 天的日期(例如),我不得不在很远的将来使用静态日期:

http://web-sniffer.net/?url=http%3A%2F%2Fwww.bestds.com%2Fimage%2Ftlogo.png

【问题讨论】:

    标签: iis web-config http-headers iis-7.5


    【解决方案1】:

    这是 IIS 的标准功能。 HTTP 响应标头模块允许您设置此公共标头。这会产生以下 web.config:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
            </staticContent>
        </system.webServer>
    </configuration>
    

    您应该只在您希望发送此标头的目录中执行此操作。通常只有具有静态内容的目录。

    【讨论】:

    • 查看上面帖子中的编辑。我特别想添加一个“过期”标题;我已经在使用最大年龄;我两个都想要。
    • 对不起,我的错,但是 IIS 没有提供动态设置的机制。您可以设置它,但只能设置为固定的日期/时间。但是,Cache-Control 标头 max-ageExpires 标头在浏览器中具有相同的效果。 Expires 标头是 HTTP/1.0 功能,而 Cache-Control 是 HTTP/1.1 功能。但据我所知,所有常见的浏览器和代理/缓存服务器都支持 Cache-Control 标头,因此使用/依赖它是安全的。
    • 是否可以在 web.config 文件中将任何值设置为动态的东西。我想出了一种使用重写模块将标题添加到特定文件类型的方法,但我仍然无法设置“现在加上 7 天”的值。
    • URL 重写模块不提供任何动态计算并以所需格式输出日期的功能。我能想到的唯一方法是创建一个 HTTPModule 并以集成模式运行您的 Web 应用程序/网站。这允许您捕获对静态内容的请求并通过您自己的代码动态添加标头。您可以编写它,以便它查看已经存在的 max-age 值并使用该值添加 Expires 标头。无需额外配置。
    【解决方案2】:

    您只能使用程序代码添加动态过期标头。

    来源: The Microsoft IIS Site

    您应该使用 Cache-Control max-age 代替,就像其他答案中建议的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 2011-02-06
      • 1970-01-01
      • 2016-12-06
      • 2014-07-19
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多