ETagとLast-Modifed応答ヘッダーの両方を完全に削除することで、ブラウザーキャッシュ内のファイルの再検証とそれに続く304応答を防ぐことができることをご存知ですか?
もちろん、これはApacheでは簡単ですが、IIS 6では泥のように明確です。IISでこれらのヘッダーの両方を削除する方法を知っている人はいますか?
ETagとLast-Modifed応答ヘッダーの両方を完全に削除することで、ブラウザーキャッシュ内のファイルの再検証とそれに続く304応答を防ぐことができることをご存知ですか?
もちろん、これはApacheでは簡単ですが、IIS 6では泥のように明確です。IISでこれらのヘッダーの両方を削除する方法を知っている人はいますか?
プログラムによる方法は、次のような HTTP モジュールを使用することです ( Luke による SOの回答に基づく):
namespace HttpModules
{
using System;
using System.Web;
public class RemoveExtraneousHeaderModule : IHttpModule
{
/// <summary>
/// Initializes a module and prepares it to handle requests.
/// </summary>
/// <param name="context">Provides access to the request context.</param>
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += this.OnPreSendRequestHeaders;
}
/// <summary>
/// Disposes of the resources (other than memory) used by this module.
/// </summary>
public void Dispose()
{
}
/// <summary>
/// Event raised just before ASP.NET sends HTTP headers to the client.
/// </summary>
/// <param name="sender">Event source.</param>
/// <param name="e">Event arguments.</param>
protected void OnPreSendRequestHeaders(object sender, EventArgs e)
{
NameValueCollection headers = HttpContext.Current.Response.Headers;
headers.Remove("Server");
headers.Remove("ETag");
headers.Remove("X-Powered-By");
headers.Remove("X-AspNet-Version");
headers.Remove("X-AspNetMvc-Version");
}
}
}
<system.web>
このモジュールは、IIS 6の場合は web.config で、<system.webServer>
IIS 7 の場合は以下でインストールされます。