2

我们的站点刚刚从 .NET 1.1 迁移到 .NET 3.5,并在此过程中更新了我们的 3rd 方服务器控件。其中一个包使用通过 WebResource.axd 提供的 javascript。这些作为普通<script src="" /> 标签包含在内。

然而,观察流量,我发现这些 javascript 文件带有阻止客户端缓存的标头。我们正在谈论很多javascript。有问题的标题:

缓存控制:无缓存,无存储
杂注:无缓存
过期:-1

这些标头是否可以在 .NET 中的某个地方进行配置?我可以在不构建 HttpModule 的情况下拦截这些请求吗?这是我可以责怪控制供应商的事情吗?<brandish weapon="blameGun" />

谢谢,

男爵

4

3 回答 3

7

你可以试试:

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);

此处记录了其他类型HttpCacheability

http://msdn.microsoft.com/en-us/library/system.web.httpcacheability.aspx

编辑:

您可以将其放入Global.asax文件而不是模块中:

void Application_AuthorizeRequest(object sender, EventArgs e)
{
    if (Request.Path.IndexOf("WebResource.axd") > -1)
    {
        Response.Cache.SetCacheability(HttpCacheability.Public);
    }
}
于 2009-04-09T01:11:22.647 回答
5

如果您的网站<compilation debug="true">在其 web.config 中使用 set 进行部署,则可能会发生这种情况。在这种情况下,缓存被禁用,以便更轻松地调试作为嵌入式资源的 JavaScript 文件。解决方案是简单地将编译标签的调试属性设置为 false。更多信息可以在这篇优秀的博客文章中找到。

于 2009-04-11T09:00:55.830 回答
0

感谢您的回复。原来我们已经有了我不想写的HttpModule,这就是问题的根源。

于 2009-04-12T08:41:42.497 回答