私はISSでMVC3ウェブサイトを実行しています。私たちには、データベースからイメージを取得するコントローラがあります。どのイメージが実際にフェッチされるかは、リクエストのホスト名に基づいて決定されます。 http://hostA.site.com/image/23は、両方のURLがIISの同じアプリケーションを参照していても、http://hostB.site.com/image/23とは異なる画像を返します。IISとホスト名のASP.NETキャッシュ
キャッシングが有効になるまでは正常に動作します。私は、サーバーとクライアントの両方をキャッシュできるようにするには、次のコードを使用:
Response.Cache.SetExpires(DateTime.Now.AddHours(1));
Response.Cache.SetCacheability(System.Web.HttpCacheability.Public);
これは、IISは、私たちが見てみたい正確に何である応答をキャッシュする原因となります。しかし、キャッシュするときにIISは異なるホスト名を区別しないようです。最初にhttp://hostA.site.com/image/23を取得すると、http://hostB.site.com/image/23への後続の呼び出しによって、IISは以前の要求からキャッシュされたイメージを返します。私は、同じサイトと同じURIを持つため、IISはそれらの要求が同じであるとみなすため、これが発生すると想定しています。
ホストごとに異なるアプリケーションを作成することなく、誰でもこの作業を行う方法を知っていますか?私はPrivate for Cacheabilityを今のところ設定しましたが、私は本当にIISキャッシュにそれらのイメージを持っていたいと思います。
ここに配置するコマンドは、クライアント用です。コードをソースコードの背後にあるコードにキャッシュすると、コードはURLがどのように提供されているかを知りませんでした。あなたはそれを使用する場合、サーバーのキャッシュを見て変更することができますか? – Aristos
キャッシュはサーバー上で発生します(HttpCacheability.Publicを設定すると)、ローカルにキャッシュされないwgetを使用してこれを検証しました。一度私はHttpCacheability.Privateを設定すると、IISはキャッシュを停止します。 IISの内部キャッシュにどのようにピークを当てるのか分からないので、何が起こっているのか分からない。 – AVee