PHPでCSSキャッシュバスターを実装する
WordPressで負荷軽減のためにキャッシュを利用することは珍しいことではないんですが、だいたいCSSのキャッシュが効きっぱなしで変更が上手くできたのか、イマイチ判断できないので、CSSキャッシュバスターを導入する。
ここをパクって実装したんだけど、毎回'file not found'が出てしまいハマる。
function echo_filedate($filename) { if (file_exists($filename)) { echo date('YmdHis', filemtime($filename)); } else { echo 'file not found'; } }
原因はfilenameの指定が間違っていたから。 dirname付きで指定してあげれば解決。
<link rel="stylesheet" href="<?php echo $td ;?>/css/mobile.css?date=<?php echo_filedate(dirname(__FILE__).'/css/mobile.css'); ?>">
結果として、こんな感じでCSSの更新時間に応じてHTMLのCSS読み込みが変化します。
<link rel="stylesheet" href="http://www.danshihack.com/wp-content/themes/cedar/css/pc.css?date=20140615093917">