私は microhosting.in で共有ホスティングを購入しました。自分のスタートアップのためにサイトをまとめた後、自然な次のステップはプロモーションでした。というわけで性能チェック。Pagespeed テストでは、キャッシングと圧縮されていない http が問題であることがわかりました。現在、Plesk を介した Windows ホスティングは、Web.config を使用しない限り、IIS の機能要件について明示的にホスティング プロバイダを説得する必要があることを意味します。技術チームは、http://blog.fi.net.au/?p=372 のようなことを試すには少し弱いです。プロキシ キャッシングはメタ タグ コンテンツ スニッフィングを控える可能性があるため、パブリック キャッシュを有効にするために http を使用することをお勧めします。.htaccess を使用したソリューションがどこにでもあるように、これらを適用する Web.config と組み合わせることができるカスタム実装はありますか?
質問する
591 次
1 に答える
0
オプションのコンテンツは、独自の web.config を使用して別のフォルダー内に圧縮して保持し、コンテンツ エンコーディング関連の属性をヘッダーに強制的に追加します。必須のコンテンツについては、asp.net ランタイムを使用するようにファイルの名前を変更して配置します --> ContentType を目的の MIME タイプに置き換え、タグ内にネストして、サーバー側の xsl 変換中にデフォルトでイライラするため、最も外側に配置するか、コメントを解除します。global.asax 内に次の C# ロジックを実装します。
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;
if (acceptEncoding == null || acceptEncoding.Length == 0)
return;
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
} /*else if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// defalte
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}*/ // Only cache for X seconds.
Response.Cache.SetExpires(DateTime.Now.AddMonths(9));
Response.Cache.SetMaxAge(new TimeSpan(270, 0, 0,0,0));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
// Sliding expiration means we reset the X seconds after each request.
// SetETag is required to work around one aspect of sliding expiration.
Response.Cache.SetSlidingExpiration(true);
Response.Cache.SetETagFromFileDependencies();
}
于 2012-12-13T13:53:05.590 に答える