3

私は、過去数年にわたって多くの異なる開発者/コンサルタントがそれに変更を加えてきた大規模なasp.netWebプロジェクトに取り組んでいます。開発者によっては、画像やその他の静的コンテンツへのパスに、正しい大文字小文字、すべて小文字、または完全にランダムなものが含まれている場合があることに気付きました。大文字と小文字の違いにより、ブラウザが同じアセットに対して複数のリクエストを行っているようです。例えば ​​-

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <img src="http://cdn.sstatic.net/stackoverflow/img/sprites.png" />
    <img src="http://cdn.sstatic.net/stackoverflow/Img/sprites.png" />
</body>
</html>

プロジェクト内のすべての画像を検索してケーシングを正規化する以外に、ここでできることはありますか?おそらく、ページの応答ヘッダーに入れて、大文字と小文字を区別しないようにブラウザに指示することができます。

4

1 に答える 1

0

まあ、ブラウザ(それを行うのはChromeだけではなく、バグのないブラウザも)はこれを行う必要があります。これは、大文字と小文字を区別しないマッピングを使用していることを知る方法がないため<http://cdn.sstatic.net/stackoverflow/img/sprites.png>です<http://cdn.sstatic.net/stackoverflow/Img/sprites.png>。異なるURI。

できることがいくつかあります。

最初の検索-次のようなものを置き換えます。

  1. 特に一般的に使用されます。
  2. 特に重いファイル。
  3. 特に一般的にスペルミス。
  4. 関係のないコードを台無しにする何かを置き換えることで、あなたが見つける結果になる可能性は低いです。

もう1つできることは、ハンドラーで大文字と小文字の正規化を強制することです。これは、大文字と小文字の正規化ルールに一致しないURIに対して呼び出された場合、301が一致する形式になります。これは、3つの異なる10kb画像を取得するのではなく、1つの10kb画像を取得し、数百バイトの2つまたは3つのリダイレクトがあることを意味します。とは言うものの、特定のファイルサイズを下回ると、追加のリクエストのコストが節約を上回ります。

最後に、フィルター(Response.Filterが設定されているストリームオブジェクトで、Response.Filterの前の値に書き込む)を使用するか、ローカルURIをスキャンするPreRenderステップのコードを使用できます(他のURIの大文字と小文字を変更した場合)結果として404になる可能性のあるサイト)、それらを正しく出力します。

于 2011-12-12T20:19:45.030 に答える