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

推薦する

Ansibleを使用してディレクトリ内のすべてのコンテンツを削除する方法

Ansible を使用する学生は、以下に示すように、Ansible が特定のフォルダーまたはファイル...

IDEA が MySQL ポート番号占有に接続できない問題の解決方法

コマンドラインでMYSQLに正常にログインでき、NavicatもMySQLに正常に接続できますが、I...

マークアップ言語 - 簡略化されたタグ

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

優れたユーザー エクスペリエンス デザイナーが行うべき 5 つのこと (画像とテキスト)

この記事は、@C7210 によって翻訳されたブログ「Usability Counts」からの翻訳です...

Nginx リバース プロキシから go-fastdfs へのケースの説明

背景go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプ...

JavaScript で 2 次元配列を作成するためのヒント

Js での 2 次元配列の作成:まず、JavaScript は 1 次元配列のみをサポートしています...

Vue3.0 は虫眼鏡効果のケーススタディを実装します

達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示さ...

docker compose デプロイメントにおけるマスタースレーブレプリケーションの実装

目次構成解析サービス構築ディレクトリ構造ファイルを作成インスタンス構成サービスを開始するテストRed...

一般的な JavaScript 文字列メソッド 28 個と使用方法のヒントのまとめ

目次序文1. 文字列の長さを取得する2. 文字列の指定された位置の値を取得する(1) charAt(...

mysql 10進データ型変換の実装

最近、次のデータ型のデータベースに遭遇しました:decimal(14,4)発生した問題は次のとおりで...

HTML_PowerNode 入門 Java アカデミー

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 HTML ...

CentOS 6.6 ソースコードのコンパイルと MySQL 5.7.18 のインストールチュートリアルの詳細な説明

1. ユーザーとグループを追加する1. mysqlユーザーグループを追加する # グループ追加mys...

xshellを使用してLinuxサーバーに接続する

xshellを使用してLinuxに接続する利点Windows環境でLinuxを直接操作できるインター...

MYSQL ロック解除とロックテーブルの紹介

MySQL ロックの概要他のデータベースと比較すると、MySQL のロック メカニズムは比較的単純で...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...