1

私の Web サイトは ASP.NET プラットフォームで実行されていますが、最近 pingdom で Web サイトをテストしたところ、以下のエラーが見つかりました。

「?」が付いているリソース 一部のプロキシ キャッシュ サーバーではキャッシュされません。クエリ文字列を削除し、パラメーターを次のリソースの 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");
}

違いは何ですか?2番目のキャッシュは、asp.netのようにファイルの変更についてサーバーをまったくチェックしません。1つのWebサーバー呼び出しを取得できます。

于 2016-09-07T07:40:01.037 に答える