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のさまざまな背景、使用シナリオ、テクニックの詳細な分析

推薦する

スタイルをより標準化するための CSS の書き方に関する 5 つのヒント

1. CSSをアルファベット順に並べるアルファベット順ではありません:コードをコピーコードは次のとお...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

MySQLデータの同時更新を処理する方法

UPDATE はロックしますか?以下のような場合、SQL文はロックされますか? テーブル1を更新しま...

Dockerはブリッジを追加し、IPアドレスの範囲を設定します

バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に...

Vue+swiperでタイムライン効果を実現

この記事では、タイムライン効果を実現するためのvue+swiperの具体的なコードを参考までに共有し...

CSSスタイルの記述順序と命名規則と注意事項

書き順の重要性ブラウザのリフローを減らし、ブラウザのDOMレンダリングパフォーマンスを向上させる①:...

div ボックス モデルの使用経験の概要

ボックスモデルの計算<br />マージン + ボーダー + パディング + コンテンツC...

Linux Centos でスクリプトを使用して Docker をインストールする方法

Dockerの主な機能は何ですか?現在、Docker には少なくとも次のアプリケーション シナリオが...

VUEウォッチリスナーの基本的な使い方の詳しい説明

目次1. 次のコードはwatchの簡単な使用法です2. 即時監視3. ハンドラメソッド4. 深い属性...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

ウェブサイトのフッター沈下現象に対する3つの解決策を詳しく解説

背景多くのウェブサイトのデザインは、一般的にコンテンツ+フッターの2つの部分で構成されています。コン...

JavaScript で虫眼鏡の特殊効果を実現

達成される効果:マウスを小さな画像の上に置くと、小さなブロックが小さな画像の上に表示され、この小さな...

MySQLテーブルパーティショニングプログラムを変更する方法

MySQLテーブルパーティショニングプログラムを変更する方法1. サブテーブルの実装の原則は次のとお...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

JavaScript における URL オブジェクトの素晴らしい使い方

目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...