【问题标题】:Set image expire date in IIS6 using Ionics ISAPI Rewrite Filter使用 Ionics ISAPI 重写过滤器在 IIS6 中设置图像过期日期
【发布时间】:2012-02-11 14:10:27
【问题描述】:

我有一个使用 ASP.NET、Windows Server 2003、IIS6 和 Plesk 8.6 控制面板的共享主机帐户。

如何设置 CSS、JS 和图片的有效期?共享主机可以吗?使用web.config 或其他文件?怎么样?

目前gtmetrix.com表示部分文件的有效期未设置。

编辑:IIS7 有一个几乎相同的问题。 this question 中的方法是否也适用于 IIS6?

编辑 2:我的托管服务提供商使用 ionic's isapi rewrite filter 进行通配符映射。

【问题讨论】:

  • IIS 6 缺少这些配置设置。这些是 IIS 7 的特性。
  • @Splash-X 那么,我该怎么办?
  • 在下面查看我的答案以获取一些选项

标签: asp.net iis-6 windows-server-2003 browser-cache


【解决方案1】:

这个答案是针对“如何在 IIS 6 中设置过期标头”的原始问题,在发布答案和一些讨论之后,主题被更改为关于如何使用 Ionics ISAPI 重写模块

想到三件事:

1.) 根据这篇文章,您可以进入 IIS 并启用内容过期或为从特定文件夹(例如 /images/ 或 /css/)请求的文件设置自定义标头

https://stackoverflow.com/a/1271082/768804

http://blogs.microsoft.co.il/blogs/yevgenif/archive/2009/02/11/web-performance-expiration-data-iis-6-0.aspx

2.) 使用脚本循环浏览您站点中的文件,并逐个将标头添加到 IIS:

https://stackoverflow.com/a/288652/768804

3.) 创建一个自定义的 HTTP 处理程序来为你做这件事,但这样做很脏,应该避免。它需要 IIS 处理静态文件请求,这会降低性能并增加响应时间和 CPU/内存负载。

【讨论】:

  • 我无法访问 IIS,因为我的托管计划是共享托管。没有任何方法可以使用 Web.config 或 plesk 吗?
  • IIS 6 没有任何配置设置可让您执行此操作。您可以尝试向您的托管服务提供商提供支持票,看看他们是否可以为您进行更改。即使制作 HTTP 处理程序也需要您的托管服务提供商进行一些更改。 IIS6 不使用 ASP.NET 来处理静态文件,因此您需要您的托管服务提供商启用通配符映射才能使 HTTP 处理程序工作。您可以查看此线程以查看我上面描述的问题:stackoverflow.com/questions/1927770/…
  • 故事的寓意是升级到 IIS7 或打开支持票以启用 expires 标头或添加通配符映射以使您能够使用 IHTTPHandeler
  • 他们正在使用“ionic 的 isapi 重写过滤器”来启用通配符映射,我该怎么办? (我已经更新了我的问题)
【解决方案2】:

Ionics Isapi 帮助文档可以在这里找到:

http://iirf.codeplex.com/documentation

根据过滤器的版本,有不同的文档。该过滤器有一个名为 RewriteHeader 的函数,可让您设置标题。

您需要创建一个 RewriteCondition 来解析 .js、.css、.jpg、.jpeg、.png、.gif 等的 URL,然后使用新的过期标头 RewriteHeader..

您可以查看以下页面以获取有关如何设置过期标头的更多信息,主要参见 14.9.3 和 14.21。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

至于如何计算要在标头中设置的值,您可能希望将其发布在项目 CodePlex 网站的讨论部分:

http://iirf.codeplex.com/discussions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多