【问题标题】:WebResource.axd and HTTP HeadersWebResource.axd 和 HTTP 标头
【发布时间】:2009-04-09 01:05:39
【问题描述】:

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

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

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

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

谢谢,

男爵

【问题讨论】:

    标签: asp.net http-headers webresource.axd


    【解决方案1】:

    你可以试试:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 2012-06-27
          • 2010-11-11
          • 2013-03-12
          • 2016-11-26
          • 2012-07-11
          • 2021-10-21
          • 2016-06-02
          • 2017-11-11
          相关资源
          最近更新 更多