1

我的网站在 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

4

1 回答 1

3

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

你得到的消息实际上是关于代理缓存服务器的——什么是代理缓存服务器?缓存您站点页面的中间计算机,而不是实际的客户端计算机 - 它可以缓存该页面并且通常不会使您的站点变慢。

因此,如果您正确设置它们,您的客户端可以将该资源保存在缓存中,并且从我看到的 asp.net 正确处理并且您的资源被缓存得很好 - 请参见此屏幕截图。

在此处输入图像描述

现在,如果您希望添加更积极的缓存,您可以使用 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那样检查服务器的文件更改,您可以获得一个网络服务器调用。

于 2016-09-07T07:40:01.037 回答