3

これはある意味で異端の質問かもしれません。多くのページがまだASPにある大きなサイトがあります。ほとんどの場合、実際には動的ではありませんが、定期的に再生成されたHTMLのチャンクが(SSIまたはServer.Executeを介して)含まれています。貧乏人のキャッシングのように見えるかもしれませんが、それは本当にうまく機能しており、MicrosoftはこのシナリオのためにIISを大幅に最適化したと思います。

ここで、ASP.NET /ASP.NETMVCで同様のことを実現できるようにしたいと思います。定期的にHTMLスニペットを生成し(通常は1時間ごと程度)、メインサイトのクロム、ナビゲーション、およびスニペットに関連するその他の動的コンテンツを提供するASP.NET /ASP.NETMVCラッパーに含めます。つまり、混合ですが、重要なのは、生成されたHTMLは、主にパフォーマンス上の理由とサーバーファームの同期を維持するために、外部プロセスによって定期的に再生成されるということです。

私が見つけたASP.NETで最も近いものは次のとおりです。

<% Response.WriteFile("GeneratedSnippet.inc"); %>

これは

<% Server.Execute "GeneratedSnippet.inc" %>

ASPで。実行するコードがないため、おそらくさらに高速です。しかし、おそらく次のように効率的ではありません。

<!--#include file="GeneratedSnippet.inc" -->

上で述べたように、IISはSSIとASPインクルードを処理するために何年にもわたって最適化されてきたと思います。一方、Response.WriteFileは、実際にファイルを読み取って吐き出す可能性があります。誰かが2つまたはいくつかの経験についての洞察を持っていますか?

心配しすぎかもしれませんが、トラフィックの多いコンテンツのほとんどは依然としてASPで実行され、多くのSSIを使用しているため、Response.WriteFileのわずかな違いでも蓄積され、目に見える影響を与える可能性があります。

4

1 に答える 1

1

質問は何ですか?:)

SSIは死んでいます。はい、サーバー側で高度に最適化されていましたが、サーバーだけでなくブラウザーでも制御をキャッシュするのはあまり効果的ではないかもしれません。

あまりにも多くの SSI を使用すると、サーバーは要求ごとにすべての関連ファイルの変更ステータスをチェックする必要があります。Expires や ETag などの HTTP ヘッダーを制御することはできません。

ASP.NET および ASP.NET MVC には、キャッシュを制御および無効化する方法が (あまりにも) たくさんあります。これにより、全体的なパフォーマンスが向上し、設計のスケーラビリティが向上し、コードの保守性が向上します。

于 2010-07-28T14:30:52.807 に答える