HTML 内の CSS および JS リンクのバージョン番号 (キャッシュを更新)

HTML 内の CSS および JS リンクのバージョン番号 (キャッシュを更新)

背景
検索エンジンで「.htaccess キャッシュ」というキーワードを検索すると、ウェブサイトのファイル キャッシュの設定に関するチュートリアルが多数見つかります。設定することで、頻繁に更新されない CSS、JS などのファイルをブラウザー側にキャッシュできるため、訪問者がウェブサイトにアクセスするたびに、ブラウザーはサーバーから読み取るのではなく、ブラウザー キャッシュから CSS、JS などを取得できます。これにより、ウェブサイトの起動がある程度高速化され、サーバーのトラフィックが節約されます。

質問
ここで問題が発生します。.htaccess によって設定された CSS および JS キャッシュには有効期限があります。訪問者のブラウザに CSS および JS がキャッシュされている場合、ブラウザは CSS および JS キャッシュの有効期限が切れる前にのみ、キャッシュから CSS および JS を読み取ります。サーバー上で CSS および JS を変更した場合、リピーターの顧客が Ctrl + F5 を押して Web サイトのページを更新するか、ブラウザのキャッシュを手動でクリアしない限り、これらの変更はリピーターのブラウザでは変更されません。ウェブサイトには数万人の訪問者がいて、その多くはリピーターです。CSS を更新した後、すべての訪問者にキャッシュを更新するよう依頼することはできません。では、この問題にどう対処すればよいでしょうか。

方法1

CSS ファイル名を変更する: 実際、この問題の解決策は非常に簡単です。キャッシュは、キャッシュされたコンテンツをファイル名でマークします。ウェブサイトの CSS ファイルの内容を更新したら、CSS ファイル名を変更するだけです。たとえば、元の HTML の CSS 呼び出しステートメントは次のようになります。


コードをコピー
コードは次のとおりです。
<link rel="スタイルシート" href="style.css" />

CSS ファイル名を変更するだけです:


コードをコピー
コードは次のとおりです。
<link rel="スタイルシート" href="index.css" />

CSS ファイル名を変更する別の方法は、次のようにバージョン番号をファイル名に書き込むことです。


コードをコピー
コードは次のとおりです。
<link rel="スタイルシート" href="index.v2011.css" />

css ファイルが更新されたら、ファイル名のバージョン番号を変更するだけです。


コードをコピー
コードは次のとおりです。
<link rel="スタイルシート" href="index.v2012.css" />

方法2
CSS ファイルにバージョン番号を追加する: 実際、CSS ファイルが変更されるたびに CSS ファイル名を変更するのは少し面倒です。そこで、読み込み CSS ステートメント (つまり、CSS リンク内の ? の後の内容) にバージョン番号を追加できます。たとえば、元の HTML の CSS 呼び出しステートメントは次のようになります。


コードをコピー
コードは次のとおりです。
<link rel="スタイルシート" href="style.css?v=2011" />

CSS ファイルのバージョン番号を 2012 に変更するだけです。


コードをコピー
コードは次のとおりです。
<link rel="スタイルシート" href="style.css?v=2012" />

一部のプロキシ キャッシュ サーバーは URL に「?」を含むリソースをキャッシュしないため、方法 2 では元のキャッシュ機能が失敗する可能性があることに注意してください。代わりに方法 1 を使用できます。

要約する

実際、CSS ファイルの後の疑問符には実用的な効果はなく、接尾辞としてのみ使用できます。疑問符とパラメータの組み合わせ方法を使用すると、バージョン番号などの情報を追加でき、同時にブラウザのキャッシュを更新できます。小さな細部が私たちに大きな利便性をもたらすことがあります。

<<:  VMware 仮想マシンのネットワークの問題の解決方法

>>:  CSSのさまざまな背景、使用シナリオ、テクニックの詳細な分析

推薦する

標準的なHTMLの書き方は、Dreamweaverによって自動的に生成されるものとは異なります。

コードをコピーコードは次のとおりです。 <!--doctype はドキュメント タイプ htm...

Linux で xargs コマンドを使用する詳細なチュートリアル

みなさんこんにちは。私は梁旭です。 Linux を使用しているときに、いくつかのコマンドを連結する必...

Linux システムで httpd の自動インストールと構成を Ansible で実装する方法

1. Ansibleのプレイブックを使用してhttpdを自動的にインストールする1) まず、Ansi...

JavaScript オブジェクトを作成する 3 つの方法

目次1. オブジェクトリテラル2. newキーワードはオブジェクトを作成する3. Object.cr...

Linux仮想メモリについての簡単な説明

目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...

JavaScript でイベントのバブリングを防ぐ方法

注意すべき点は、イベントバブリング自体の特性上、メリットだけでなくデメリットも生じるということです。...

MySQL インフラストラクチャ チュートリアル: クエリ ステートメント実行プロセスの詳細な説明

序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...

Docker は次の「Linux」になれるか?

Linux オペレーティング システムは過去 20 年間にわたってデータ センターに革命をもたらし...

TS 数値区切り文字とより厳密なクラス属性チェックの詳細な説明

目次概要演算子の改良と正確なinstanceofよりスマートなオブジェクトリテラル推論固有のシンボル...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...

標準のMySQL (x64) Windowsバージョンのインストール手順の詳細な説明

MySQL x64 はインストーラーを提供していません、インストーラーを提供していません、インストー...

Nginx が Apache より優れている理由

Nginx は、わずか数年で Web サーバー市場の大部分を占めるようになりました。周知のとおり、N...

この記事では、Viteがブラウザのリクエストに対して何を行うかを説明します。

目次動作原理:ブラウザは何をするのですか?ホストファイル index.htmlメイン.jsその他のベ...

MySQL OOM (メモリオーバーフロー) の解決策

OOM は「Out Of Memory」の略で、メモリオーバーフローを意味します。メモリ オーバーフ...

MySQL で特定の日、月、または年のデータをクエリするためのコードの詳細な説明

今日 テーブル名から * を選択します。ここで、to_days(時間フィールド名) = to_day...