将VirtualPathProvider用于简单的静态文件

时间:2009-04-20 15:26:35

标签: c# .net asp.net

我们使用自定义VirtualPathProvider从基于ASP.NET的网站提供文件。为了提供静态文件,如图像,CSS和脚本,我们明确声明StaticFileHandler应该用于具有此扩展名的文件。像这样:

<add verb="GET" path="*.jpg" type="System.Web.StaticFileHandler"></add>

除了一个事实外,所有这些看似合乎逻辑且有效 - 所有使用此处理程序提供的虚拟文件都将通过“Cache-Control:private”标头进入客户端。这不是我对静态文件的期望。

有没有什么好办法让这些文件可以缓存?

其他信息:

  1. 是的,可以在一个简单的HttpModule中添加缓存头,这个HttpModule会为所有“.js”文件添加它,但这不是好办法。
  2. 我找到this post,这似乎与我们的问题有关。它指的是KB947461。但目前尚不清楚,这个补丁是否仍未应用于框架?差不多一年过去了。在哪里得到它,如果没有。
  3. 更新: 看起来KB947461中的补丁包含在.NET Framework 3.5 SP1中。我们已经安装了它。

    更新2 : 现在我们最终得到了这个HttpModule,如果当前处理程序是StaticFileHandler,它会添加缓存头。但这绝对是一个拐杖。

2 个答案:

答案 0 :(得分:2)

令人难以置信的是,内置的不会这样做。这看起来很有希望:http://code.google.com/p/talifun-web/wiki/StaticFileHandler

答案 1 :(得分:0)

在IIS,WebSite属性和缓存选项卡中尝试Active Cache。在我的情况下工作得很好。