c# – 将VirtualPathProvider用于简单的静态文件

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

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

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

有没有什么好方法可以使这些文件可缓存?

附加信息:

>是的,可以在一个简单的HttpModule中添加缓存头,它将为所有“.js”文件添加它,但这不是好方法.
>我找到了this post,这似乎与我们的问题有关.它指的是KB947461.但目前尚不清楚,这个补丁是否仍未应用于框架?差不多一年过去了.在哪里得到它,如果没有.

更新:
看起来像KB947461中的补丁包含在.NET Framework 3.5 SP1中.我们已经安装了它.

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

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

点赞