WebResource.axd and HTTP Headers

丶灬走出姿态 提交于 2019-12-12 09:05:42

问题


Our site just moved from .NET 1.1 to .NET 3.5, and in the process updated our 3rd party server controls. One of these packages uses javascript provided via WebResource.axd. These are included as normal <script src="" /> tags.

Watching the traffic, however, I see that these javascript files are coming across with headers that prevent client-side caching. And we're talking a lot of javascript. The headers in question:

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

Are these headers configurable in .NET somewhere? Can I intercept these requests short of building an HttpModule? Is this something I can blame the control vendor for? <brandish weapon="blameGun" />

Thanks,

Baron


回答1:


You could try:

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

The other types of HttpCacheability are documented here:

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

Edit:

You can throw this in your Global.asax file instead of a module:

void Application_AuthorizeRequest(object sender, EventArgs e)
{
    if (Request.Path.IndexOf("WebResource.axd") > -1)
    {
        Response.Cache.SetCacheability(HttpCacheability.Public);
    }
}



回答2:


This may occur if your web site is deployed with <compilation debug="true"> set in its web.config. Caching is disabled in this case for easier debugging of JavaScript files served as embedded resources. The solution is to simply set the debug attribute of the compilation tag to false. More info can be found in this excellent blog post.




回答3:


Thanks for your responses. It turned out we already had the HttpModule that I didn't want to write in place, and it was the source of the problem.



来源:https://stackoverflow.com/questions/732448/webresource-axd-and-http-headers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!