Asp.Netアプリケーションには、画像の要求を処理するIHttpHandlerがあります。ハンドラーは、画像キャッシュ内の画像を識別する特別なIDで呼び出されます。画像が現金に入れられると、それは決して変わりません。私の質問は:
指定された日付を実際にチェックせずに、「If-Modified-Since」ヘッダーを持つリクエストに対して常にhttpステータスコード304を返すことは問題ありませんか?その理由は、ブラウザにはすでに画像のコピーが必要であるということです(それは、modified-sinceヘッダーを提供していたためです)。
これにより、(まだ)イメージの作成日を追跡しないため、作業が楽になります。
実際のコードは次のとおりです(更新:Aristosが推奨するように、サーバーの応答にif-modifiedヘッダーを含めました):
public void ProcessRequest(HttpContext context)
{
    if (!String.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"])) {
        //Is this okay?
        context.Response.StatusCode = 304;
        context.Response.StatusDescription = "Not Modified";
        return;
    }
    var thumbnailId = context.Request.QueryString["thumbnail"];
    using (var thumbnailCache = new CThumbnailCache()) {
        var imageBytes = thumbnailCache.GetImageById(thumbnailId);
        context.Response.ContentType = "image/png";
        var outputStream = context.Response.OutputStream;
        outputStream.Write(imageBytes, 0, imageBytes.Count());
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.Cache.SetLastModified(DateTime.UtcNow);
        // added after Aristos post
        context.Response.AddHeader("If-Modified-Since", DateTime.UtcNow.ToString("r"));
        const int maxAge = 86400 * 14; // 14 Tage
        context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(maxAge));
        context.Response.Cache.SetMaxAge(new TimeSpan(0, 0, maxAge));
        context.Response.CacheControl = "private";
        context.Response.Cache.SetValidUntilExpires(true);
    }
}