[解決済み] asp.net アプリケーションでブラウザに最新の js と css ファイルを取得させる
2022-11-13 13:57:31
質問
ブラウザによっては、jsやcssのファイルをキャッシュしてしまい、強制的に更新させないようにしているものがあります。 最も簡単な方法は何ですか。
私はちょうど、うまくいきそうなこの解決策を実装しました。
ページでバージョン変数を宣言する
public string version { get; set; }
web.configのキーからバージョン番号を取得する
version = ConfigurationManager.AppSettings["versionNumber"];
aspxページでは、javascriptとスタイルシートの呼び出しを以下のように行います。
<script src="scripts/myjavascript.js?v=<%=version %>" type="text/javascript"></script>
<link href="styles/mystyle.css?v=<%=version %>" rel="stylesheet" type="text/css" />
したがって、web.config でバージョン = 1.0 から 1.1 に設定すれば、ブラウザは最新のファイルをダウンロードするようになり、あなたとユーザーのフラストレーションが軽減されることが期待されます。
あるいは、Web サイトに予期しない問題を引き起こすでしょうか。
どのように解決するのですか?
スクリプトにクエリパラメータとして最終更新時刻を張り付けることで解決しました。
私はこれを拡張メソッドで行い、CSHTMLファイル内でそれを使用しました。 注意してください。 この実装では、タイムスタンプを1分間キャッシュしているので、ディスクをそれほど消耗していません。
以下は拡張メソッドです。
public static class JavascriptExtension {
public static MvcHtmlString IncludeVersionedJs(this HtmlHelper helper, string filename) {
string version = GetVersion(helper, filename);
return MvcHtmlString.Create("<script type='text/javascript' src='" + filename + version + "'></script>");
}
private static string GetVersion(this HtmlHelper helper, string filename)
{
var context = helper.ViewContext.RequestContext.HttpContext;
if (context.Cache[filename] == null)
{
var physicalPath = context.Server.MapPath(filename);
var version = $"?v={new System.IO.FileInfo(physicalPath).LastWriteTime.ToString("MMddHHmmss")}";
context.Cache.Add(filename, version, null,
DateTime.Now.AddMinutes(5), TimeSpan.Zero,
CacheItemPriority.Normal, null);
return version;
}
else
{
return context.Cache[filename] as string;
}
}
}
そして、CSHTMLのページで
@Html.IncludeVersionedJs("/MyJavascriptFile.js")
レンダリングされたHTMLでは、次のように表示されます。
<script type='text/javascript' src='/MyJavascriptFile.js?20111129120000'></script>
関連
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] Node.jsでディレクトリに存在するすべてのファイル名のリストを取得する方法は?
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] .NETアプリケーションを強制的に管理者として実行させるにはどうしたらいいですか?
-
[解決済み] ASP.NET WebサイトとASP.NET Webアプリケーションのどちらを選ぶか?
-
[解決済み] ディレクトリ内のすべてのファイルやフォルダを削除する方法は?
-
[解決済み] クライアントにJavaScriptファイルを強制的に更新させるには?
-
[解決済み] アプリケーションフォルダのパスを取得する最適な方法
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] CORS: 認証モードは 'include' です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法