5

VirtualPathProvider現在、仮想パスをソリューションの外部のディレクトリにマップするを使用しています。主に自主練習用に作っています。これは、ソリューションのディレクトリにソフト リンクまたは NTFS ハード リンクを設定することとまったく同じです。

とにかく、カスタム プロバイダーを使用して、その仮想ディレクトリから静的イメージを正常に読み込むことができました。

問題は、ブラウザが画像をキャッシュしないことです。また、サーバーはキャッシュ情報 (ETag など) を返すことさえ考えていません。

これが私がやったことです:

  • GetFile(path).Open()FileStream経由で戻りますFile.Open()
  • 私はオーバーライドしませんでしたGetCacheKeyGetCacheDependencies
  • 私はMurmurハッシュを返すことをオーバーライドしGetFileHash(CRC-32よりも最速のようです)、テストしました
  • デバッグ中GetFileHashに、プロバイダーで呼び出されることはありません

CTRL-F5ing は次のヘッダーのみを返します (キャッシュへの参照はありません)

Cache-Control   private
Content-Length  476
Content-Type    image/png
Date    Sat, 29 Dec 2012 21:25:54 GMT
Server  Microsoft-IIS/8.0
X-AspNet-Version    4.0.30319
X-Powered-By    ASP.NET
X-SourceFiles   [...]

現在、Visual Studio のデバッグ サーバーと Firebug を搭載した Firefox でデバッグしています。

例として、これが私が期待したものです(http://i.stack.imgur.com/3mn3d.png)

Accept-Ranges   bytes
Cache-Control   max-age=315360000
Content-Length  1059
Content-Type    image/png
Date    Sat, 29 Dec 2012 21:35:29 GMT
Etag    "7d636a8ef932ed081c16ace6f87b16e6"
Expires Fri, 12 Feb 2038 09:58:39 GMT
Last-Modified   Tue, 14 Feb 2012 22:07:18 GMT
Server  ECAcc (fcn/4089)
X-Cache HIT

質問は明らかです:これらの静的リソースをブラウザーにリロードさせないようにするにはどうすればよいですか?

4

1 に答える 1