なかなかデメリットが書かれていることがなく、鵜呑みにしてる人がいたので、デメリットを書いてみる。
PHPのファイルキャッシュ制御の必要
PHPはパフォーマンス向上のために、ファイル情報をキャッシュすることがある。
そのため、clearstatcache() 関数を使用しなければ、filemtime() 関数が適切に動作しない場合がある。
https://www.php.net/manual/ja/function.clearstatcache.php
バージョン管理を利用している場合に、二重管理になってしまう
バージョン管理システムを利用している場合、通常JSやCSSのパラメーターにはバージョン番号を付与する(WPの場合は、style.cssのバージョンを記載するのが通例)。
日付をパラメーターにすると、バージョン管理以外にもファイルバージョンがあることを示してしまうので、二重管理の状態になってしまう。
PHPエラーが発生する可能性が増大
ファイル名が変更されたり、ファイルが移動した場合に、PHPエラーが発生する。
更新ファイルの不備の影響をただちに受けてしまう
ファイル更新するとすぐにタイムスタンプが更新されるため、更新ファイルに不備があった場合、
キャッシュがあるユーザーでのただちに影響を与えてしまう。
外部のファイルには使用できない
CDNなどを使用している場合には利用できない。
レスポンスヘッダのLast-Modifiedを利用して取得もできるが、それなら上述のバージョン管理の番号を付与したほうが楽に実装できる。
<?php
// last-modified取得の実装例
$url = 'https://hoge.com/file.css'
$headers = get_headers( $url, 1 );
$mod = $headers['Last-Modified'];
速度について(の不安)
サーバー内のリソースを読み込み、タイムスタンプを表示するという処理は、インメモリで行う処理よりも遅くなる(キャッシュを削除する処理を入れると尚更)。
そのため、たくさんのこの関数を適用した場合、表示速度が遅くなる可能性がある(ベンチマークはとっていない)。