-1

使用するC#, Framework 2.0

JS および CSS ファイルのコンテンツを読み取るための最適化された方法は何ですか?

内容は同時に書き出す必要があることに注意してください

編集:

より明確にするために、ページの読み込み中に、すべての JS ファイルのコンテンツを読み取り、そのコンテンツをページに書き出す必要があります。最後に、このページは単一の JS ファイルとして機能し、CSS ファイルについても同様に機能します。

ここから、ファイルの内容を何度も読み取るように要求しています。

ファイルへのアクセス中にパフォーマンスを最適化する最良の方法を探しています。

4

4 に答える 4

0

私が知る限り、これがファイルの内容を読み取る最良の方法です。

File.ReadAllText(filepath)その内容を取得するために使用します。

filepath = Server.MapPath(jsFile);
if (File.Exists(filepath))
{
   contents = File.ReadAllText(filepath);
   Response.Write(contents);
}
于 2012-07-05T09:02:11.957 に答える
0

プロジェクトの種類にもよりますが、Bundling & Minificationをご覧ください。そうすれば、車輪を再発明する必要はありません。

于 2012-07-05T09:15:28.690 に答える
0

目標は何ですか?スキャンして出力?これはエンコーディングセーフなバージョンです(つまり、可能な場合はエンコーディング変換を行います)

    void ConcatenateAllSafe(StreamWriter output, params string[] files)
    {
        foreach (var f in files)
        {
            using(StreamReader rd = new StreamReader(f))
            {
                string line = null;
                while (null != (line = rd.ReadLine()))
                {
                    output.WriteLine(line);
                }
            }
        }
    }

    // This version will assume everything is sharing the same encoding
    void ConcatenateAllUnsafe(Stream output, params string[] files)
    {
        var data = new byte[1024 * 64];//64k should be enough for anyone

        foreach (string f in files)
        {
            using (Stream inStream = new FileStream(f, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                for (int offset = 0,
                         read; 0 != (read = inStream.Read(data, offset, data.Length)); offset += read)
                {
                    output.Write(data, 0, read);
                }
            }
        }
    }
于 2012-07-05T09:22:26.750 に答える
0

すべての JavaScript を 1 つのリクエストにバンドル、縮小、圧縮する ToolkitScriptManager が既にあります。これを見てみるのもいいかもしれません。

JavaScript と CSS を 1 つのファイルにバンドル、縮小、圧縮する理由は理解していますが、リクエストごとに実行する必要がある理由を理解できません。次のいずれかを実行できます。

  1. CodeMaster の回答(YUICompressor、Closure Compiler、AJAXminifier)で提案されているように、既存のバンドルおよび縮小ツールのいずれかを使用します。これにより、スクリプトと CSS が 1 回だけバンドルされます。これもビルド時に行われ、それを使用してすべてのリクエストが処理されます。私にとって、これはスクリプトをバンドルする最も効果的な方法であり、スクリプトは単なる静的ファイルであり、バンドルに処理が必要ないため、サーバーの負荷を軽減します。また、スクリプトを静的ファイルとして扱い、クライアントでキャッシュするか、CDN からロードすることもできます。

  2. カスタム ハンドラーがクエリ文字列を検索する Toolkit Script Manager アプローチを使用します。組み合わせが存在する場合はそのキャッシュを調べ、そうでない場合はFlorion の回答を使用して出力を構築し、後続の呼び出しのためにキャッシュします。これにより、頻繁なファイル読み取りを回避できます。

于 2012-07-06T04:46:40.547 に答える