menu
menu

キーワード検索

 

前月(12月)の人気記事トップ10

  1. ( 1-) 【CSS Tips】CSSだけでドロップダウンメニュー
  2. ( 5↑) 【iPhone・iPad】投稿の準備中にエラーが起きました。後でやり直してください。
  3. ( 3-) 【HTML5】スマホサイトの作成・基本編
  4. ( 2↓) 【CSS Tips】CSSだけでサイズ可変・スマホ対応のアコーディオン
  5. ( 4↓)【jQuery入門】jQueryで日時を表示
  6. ( 6-) 【Mac Tips】MacにInkscapeをインストール
  7. ( 7-) 【jQuery】表示しているブラウザの高さを取得してCSSのheightに指定
  8. ( -↑) 【Mac】iMovieの保存場所を変更する
  9. (10↑) 【CSS Tips】CSSだけでブロック要素の表示非表示(トグルボタン)
  10. ( 8↓) 【MySQL】Windows 10にMySQLをインストール

【PHP】キャッシュを無効化せずにCSSの変更を反映させる方法

  • Labs

【PHP】キャッシュを無効化せずにcssの変更を反映させる方法

こんにちは(・∀・)

年の瀬も押し迫りました今日この頃、みなさんいかがお過ごしでしょうか。本日の投稿が年内最後の投稿となります。

今日は表題の通り、キャッシュを無効化せずにCSSの変更を反映させる方法についてご紹介します。

ファイル名にクエリの付加

ブラウザがキャッシュを読みこまないようにして修正したCSSファイルの変更を反映させるには、CSSファイルの名前の後ろ、例えばstyle.cssだったら拡張子の.cssの後ろにクエリを加える方法が一般的なのかと思います。


style.css?1225201710112260

実際のファイル名に?以下の数値を付加する訳ではなく、HTML上だけになります。

ちょっとわかりづらいかもしれませんが、実際のstyle.cssのファイル名はそのままでHTMLのlink要素のファイル名の部分だけを変更するのです。

HTMLはstyle.cssとstyle.css?xxxxは同じファイルと見做しますが、ブラウザは別ファイルと認識してキャッシュを読み込まないようになります。


<link rel="stylesheet" href="style.css?12252017100000">

拡張子の後ろの数字の部分を変更することでブラウザには新しいファイルだということを認識させることができるのでスーパーリロードをすることなく変更を反映させることができます。

この方法で一々スーパーリロードをする煩わしさから解放されますが、新たに一々HTML上のlink要素のファイル名を変更しなくてはいけないという作業が発生します。

なのでこのHTML上のファイル名を変更する方法をPHPで自動化します。

PHPでファイル名にクエリの自動付加
PHP

<?php echo date("YmdHis"); ?>

link要素のファイル名の最後に次のコードを付け足します。


?<?php echo date("YmdHis"); ?>

こんな感じになります。


<link rel="stylesheet" href="style.css?<?php echo date("YmdHis"); ?>">

これでCSSファイルをFTPでアップするたびにクエリに設定した日付が変わるので、ブラウザはファイルが新しくなったと認識してキャッシュを読み込まないようになります。

ちなみにtimezoneを設定しないと正しい日時が付加されません。


<?php date_default_timezone_set('Asia/Tokyo'); ?>

気になる方はlink要素の前に記述しておきましょう。気にならなければ敢えて記述する必要はありません。なくても問題ありません。

動作の確認はしてませんので保証できませんが、JavaScriptのjsファイルでも使えるのではないかと思います。


以上で本年最後の投稿となります。来年もよろしくお願い申し上げます。
Webデザインラボ管理人

  • カテゴリー:Labs