4

隠し内部サイトのシステムを使用しています。パスを非表示にするために、HttpContext.RewritePathを使用しています。新しい名前を生成する写真をアップロードするシステムもあり、写真は変更されません。そのような写真にはクライアントキャッシュを使用したいと思います。

ユーザーに表示されるサイトのURL:/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg

サーバー上のHttpContext.RewritePathの後のURL:/_sites/_shared/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg

「/_sites/ _shared/files」フォルダにクライアントキャッシュ設定のあるweb.configがあります。

<system.webServer>
    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
    </staticContent>
</system.webServer>

「/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg」URLが要求された場合、この設定はまったく適用されません。応答としてCache-Controlヘッダーはありません。

完全なURL「/_sites/_shared/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg」が要求され、HttpContext.RewritePathがそれをスキップした場合、キャッシュ設定は機能します。

しかし、同じweb.configを使用してルートに「/ files」フォルダーを作成すると、キャッシュ設定は元の「/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg」URLで機能し始めます。

したがって、web.configクライアントのキャッシュ設定は、最初に要求されたディスクパスによってのみ適用され、書き換えられたパスによっては適用されません。

ルートにフォルダを作成する以外にこれを修正する方法はありますか?

4

1 に答える 1

0

web.config にはstaticContent、URL を書き換えている間のための構成要素があり、動的にするため、構成は適用されません。

独自の HTTP ハンドラーを作成し、それを任意のファイル拡張子にマップすることができます。ハンドラーの実装内で、ほとんどすべての HTTP ヘッダーを設定できます。この場合、キャッシュ コントロール ヘッダーです。設定については、 IHttpHandler インターフェイスのこちら とこちらを 参照してください。セクション 14.9 Cache-Control を参照してください。

于 2013-07-21T08:34:15.380 に答える