2009-04-09 53 views
2

我们的网站刚刚从.NET 1.1迁移到.NET 3.5,并在此过程中更新了我们的第三方服务器控件。其中一个软件包使用通过WebResource.axd提供的JavaScript。这些都包含在正常的<script src="" />标签中。WebResource.axd和HTTP头

然而,看到这些流量,我发现这些JavaScript文件会遇到阻止客户端缓存的头文件。我们正在谈论很多JavaScript。有问题的标题:

 
Cache-control: no-cache, no-store 
pragma: no-cache 
Expires: -1 

这些标题是否可以在.NET某处进行配置?我可以拦截这些建立HttpModule的请求吗?这是我可以指责控制供应商吗? <brandish weapon="blameGun" />

感谢,

男爵

回答

6

你可以尝试:

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); 
    } 
} 
5

,如果你的网站被部署在其web.config中<compilation debug="true">组可能发生这种情况。在这种情况下缓存被禁用,以便更容易地调试充当嵌入式资源的JavaScript文件。解决方法是简单地将编译标签的debug属性设置为false。更多信息可以在this优秀的博客文章中找到。

0

感谢您的回复。事实证明,我们已经有了我不想写的HttpModule,这是问题的根源。