从静态资源中删除查询字符串

时间:2016-09-07 06:48:39

标签: asp.net scriptresource.axd pingdom

我的网站在ASP.NET平台上运行,最近我在pingdom上测试了我的网站,我发现了以下错误。

  

带有“?”的资源URL中的某些代理缓存没有缓存   服务器。删除查询字符串并将参数编码为   以下资源的URL:   https://projectsdeal.co.uk/ScriptResource.axd?d ......   63Nawdr4rAt1lvT7c_zyBEkV9INg0& T公司= ffffffffe3663df5   https://projectsdeal.co.uk/ScriptResource.axd?d ......   JGTlZFM0WRegQM9wdaZV3fQWMKwg2& T公司= ffffffffe3663df5

1 个答案:

答案 0 :(得分:3)

简单保持原样(它不是错误!) - 你不能从资源中删除这个查询字符串,因为这是关于如何从asp.net加载该资源的id

您获得的消息实际上是代理缓存服务器 - 什么是代理缓存服务器?一台缓存您网站页面的中间计算机,而不是实际的客户端计算机 - 可以保存在该页面的缓存中,而不会使您的网站速度变慢。

所以你的客户端可以在缓存中保存该资源如果你正确设置它们,并且从我看到的asp.net正确处理并且你的资源缓存得很好 - 请看这个屏幕截图。 / p>

enter image description here

现在,如果您希望添加更具侵略性的缓存,可以使用global.asax并执行类似

的操作
protected void Application_BeginRequest(Object sender, EventArgs e)
{
    string cTheFile = HttpContext.Current.Request.Path;

    if (cTheFile.EndsWith("WebResource.axd", StringComparison.InvariantCultureIgnoreCase))
    {
        JustSetSomeCache(app);
    }
}

private static void JustSetSomeCache(HttpApplication app)
{
    app.Response.Cache.AppendCacheExtension("post-check=900, pre-check=3600");
    app.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(32));
    app.Response.Cache.SetMaxAge(new TimeSpan(32, 0, 0));
    app.Response.Cache.SetCacheability(HttpCacheability.Public);
    app.Response.AppendHeader("Vary", "Accept-Encoding");
}

有什么不同?第二个缓存不是像asp.net那样检查服务器的文件更改,你可以获得一个网络服务器调用。