0

クライアントのキャッシュはリリースごとに無効化されるわけではないため、リソースを変更すると、ほとんどのリソースでクライアントのキャッシュに問題が発生します。

考えられる解決策1: .net MVCを使用しているので、すべてのリソースを処理してバージョンを割り当てるヘルパーを作成することを考えていました。例:

@SomeHelper.VersionJsFile("~/scripts/somejs1","~/scripts/somejs2","~/scripts/somejs3")

出力します:

<script src="~/scripts/somejs1?v=1234">
<script src="~/scripts/somejs2?v=1234">
...

問題: ASP.netでそのような同様のことを行う方法がわかりません。 問題2:ファイルがたくさんあり、そのうちのいくつかを忘れてしまう可能性があります。

考えられる解決策2: もう1つの解決策は、すべてのファイル(多数のファイル...実際には大量のファイル)を調べて、バージョンを手動で入力することです。

<script src="scripts/somejs1.js?v=<%=version %>

問題:ファイルがたくさんあり、そのうちのいくつかを忘れてしまう可能性があります。

考えられる解決策3: この例で説明されているようにカスタムフィルターストリームを作成する:フィルターストリームの例

問題:危険です。フィルターがクラッシュすると、クライアントがソフトウェアをまったく使用できなくなる可能性があります。 問題2:私はストリームの操作に慣れていないため、適切に実装するのは非常に「困難」です。 問題3:将来の開発者のために維持するのはかなり「難しい」。

考えられる解決策4: YUIcompressionツールを使用します。それについて考えないでください。これはレガシーコードであり、それには遅すぎます。

私の質問:そのようなシステムでファイルをバージョン管理するための最良の方法は何ですか?私がすでに良い解決策を見つけた場合、その解決策を適切に実装するためのヒントはありますか?

4

1 に答える 1

3

私は、js リソースのバンドルとバージョン管理の両方にCassetteを使用して、多くの幸運に恵まれました。Webformsをサポートし、オプションでのみバージョン管理/キャッシュ無効化に使用されます。構成でリソースを少し設定する必要がありますが、1 か所で構成するだけでよく、ページは必要なときにリソースを参照するだけです。

于 2013-01-31T14:02:30.600 に答える