実際のhtmlをラップするスクリプト/画像/css参照用のサーバー/ユーザーコントロールを作成できます。コントロールは、ユーザーがページをリクエストするたびに、script/css/image 参照のそれぞれにランダムなクエリ文字列を追加します。あなたの参照は次のようになります:
/_layouts/1033/styles/Themable/Menu.css?rev={ランダム GUID を挿入}
これにより、ブラウザは毎回ファイルをリロードします。
しかし、キャッシュを削除すると、ユーザーのページの読み込み時間が改善されるのに、なぜキャッシュを削除する必要があるのでしょうか? 私が持っている例を同じように簡単に使用でき、ランダムな GUID を生成する代わりに、現在のファイルのハッシュに基づいて GUID を生成します。そうすれば、実際に変更された場合にのみ、ユーザーにファイルの更新を強制します。または、さらに良いことに、SharePoint には、SPUtility.MakeBrowserCacheSafeLayoutsUrl
正しくキャッシュされる URL を作成するために使用できる が既にあります。ここに例があります
マスター ページの Html (RelativeUrl は "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS" の下にあります)
<MyControls:CacheSafeScriptLinkControl RelativeUrl="MyFeature/js/core.js"
runat="server" />
サーバー制御
protected override void CreateChildControls()
{
string cacheSafeUrl =
SPUtility.MakeBrowserCacheSafeLayoutsUrl(RelativeUrl, false);
ScriptLink scriptLink = new ScriptLink
{
Language = "javascript",
Localizable = false,
Name = cacheSafeUrl,
Version = 4
};
Controls.Add(scriptLink);
base.CreateChildControls();
}