アプリケーションの他のファイルのキャッシュを無効にせずに、ASP.NETアプリケーションで単一のJavaScriptファイルのキャッシュを無効にする方法はありますか?
これはAzureでIIS 7で実行されているため、これを制御する唯一のオプションはwebserverタグ内にあるようです。
現在、以下の設定を使用していますが、これによりすべてのファイルのキャッシュが無効になります。
<modules runAllManagedModulesForAllRequests="true"/>
<staticContent>
<clientCache cacheControlMode="DisableCache"/>
</staticContent>
</system.webServer>
頻繁に変更される単一のJavaScriptファイルのキャッシュを無効にしたいだけです。
出来ますか?
私はこの質問を見つけました。以下を使用して、特定のファイルのキャッシュを無効にすることができます。
<configuration>
<location path="path/to/the/file">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
</configuration>
(パスはweb.configファイルからの相対パスであることに注意してください)
または、単一のファイルを独自のディレクトリに配置し、そのディレクトリに独自のweb.configを指定して、その中のすべてのキャッシュを無効にします。
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
[どちらもWindows 7上のIIS7.5でテスト済みですが、Azureで正常に機能することを確認する必要があります]
上記の回答に「プロフィール」タグがないようです
<caching>
<profiles>
<add extension=".js" kernelCachePolicy="DontCache" policy="DontCache"/>
</profiles>
</caching>
System.WebServer/Cachingクラスを確認すると、特定の拡張機能にキャッシュプロファイルを適用できます。これにより、少なくとも.jsで終わるすべてのJavascriptファイルを制御できるようになります。
<system.webServer>
...
<caching>
<add extension=".js" policy="DontCache" kernelCachePolicy="DontCache" />
</caching>
</system.webServer>
これにより、クラウドのプロセスキャッシュとカーネルキャッシュの両方で.jsキャッシュが無効になります。
私は考えるファイルだけを含むフォルダにこのweb.configを作成でき、そのフォルダレベルでのみ.jsのキャッシュを無効にします。私は正直言って自分で試したことがないので、試してみてください。
さらに、キャッシング構成に関連するIISのドキュメントをご覧ください。
/ Caching: http://www.iis.net/ConfigReference/system.webServer/caching
/ Caching/Profiles: http://www.iis.net/ConfigReference/system.webServer/caching/profiles
/ Caching/Profiles/Add: http://www.iis.net/ConfigReference/system.webServer/caching/profiles/add
うまくいけば、それに加えて、それらの構成タグに関するいくつかの調査が役立つでしょう。
そうでない場合は、IISリクエストパイプに挿入できるカスタムHTTPモジュールの実装を検討することをお勧めします。これにより、キャッシュ制御をその特定のファイルに絞り込むことができます。
**これに値するのは、IISの動作であり、Azureの内部でも外部でも変わらないため、DevファブリックやAzureのテストに煩わされることなく、このローカルを簡単にテストできます。
このようにそのフォルダーにweb.configを含めることでフォルダーレベルの拡張機能を削除することで、フォルダーレベルの出力キャッシュを無効にできます。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<caching>
<profiles>
<remove extension=".js" />
</profiles>
</caching>
</system.webServer>
</configuration>
このフォルダでは、.jsで終わるファイルの出力キャッシュが有効になりません。
開くIISパネル。
サイトから関連アプリケーションを開き、特定のファイルを含むフォルダーに移動します。
右側のペインから、コンテンツビューに切り替えます
希望のファイルを選択してください
ファイルを右クリックして、[機能ビューに切り替え]を選択します。
そこから[HTTP応答ヘッダー]を選択し、[追加]をクリックして新しいヘッダーを追加し、 "Cache-Control"ヘッダーに "no-cache"値を追加します。
はい、可能です。構成ファイルで行うことができます。
( https://stackoverflow.com/a/4821328/2247494 を参照)
<configuration>
<location path="cache.manifest">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
</configuration>