私は aspx ページを持っていますが、すべてのコンテンツは手で生成されています (はい、ハンドラーを作成する必要があることはわかっています。別の質問があります)
出力をクライアント ブラウザにキャッシュしたい。問題は、1 つのクエリに対してのみキャッシュされることです。
public static void ProceedCaching(string etag, string lastModify, string response, HttpResponse Response,
HttpRequest Request)
{
Response.AddHeader("ETag", "\"" + etag + "\"");
Response.AddHeader("Last-Modified", lastModify);
Response.AppendHeader("Cache-Control", "Public");
Response.AppendHeader("Expires",
DateTime.Now.AddMinutes(1).ToUniversalTime().ToString("r",DateTimeFormatInfo.InvariantInfo));
string ifModified = Request.Headers["If-Modified-Since"];
if (!string.IsNullOrEmpty(ifModified))
{
if (ifModified.Contains(";"))
ifModified = ifModified.Remove(ifModified.IndexOf(';'));
}
string incomingEtag = Request.Headers["If-None-Match"];
if (String.Compare(incomingEtag, etag) == 0 || string.Compare(ifModified, lastModify) == 0)
{
Response.StatusCode = 304;
Response.End();
}
Response.Write(response);
Response.End();
}
それはかなり面倒になっています。私が言ったように、一度だけキャッシュされます。受信後、HTTP 304 ブラウザーは情報 (etag、lastmodified) をキャッシュせずにクリーン リクエストを送信します。アイデアはありますか?