キャッシングで困っている...
このphpファイルをURL書き換えで使用して、cssとjsを圧縮してキャッシュします
ファイルの 1 つを変更または更新すると、ブラウザが更新されたファイルを取得するという印象を受けました。しかし、キャッシュをクリアするか、ページを更新しない限り、そうではありません。
私のコーディングは間違っていますか?それとも、ブラウザはキャッシュの有効期限が切れるまで更新されたコンテンツを取得しないと想定していますか?
<?php
$file = $_SERVER['DOCUMENT_ROOT'].'/'.$_GET['file'];
$last_modified_time = filemtime($file);
$etag = md5_file($file);
$expires = 60*60*24*7;
if(file_exists($file))
{
if($_SERVER['HTTP_IF_NONE_MATCH'] != $etag)
{
header("Pragma: public");
header("Cache-Control: maxage=$expires, must-revalidate");
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");
header("Etag: \"{$etag}\"");
if($_GET['type'] == 'js') header('Content-type: application/javascript');
if($_GET['type'] == 'css') header('Content-type: text/css');
if($_GET['type'] == 'ico') header('Content-type: image/x-icon');
ob_start("ob_gzhandler");
include($file);
}
else {
header('HTTP/1.0 304 Not Modified');
}
}
else {
header("HTTP/1.0 404 Not Found");
}
?>
ルールを書き換える
RewriteRule ^(.*).js$ /compress.php?file=$1.js&type=js [L,QSA]
RewriteRule ^(.*).css$ /compress.php?file=$1.css&type=css [L,QSA]
RewriteRule ^(.*).ico$ /compress.php?file=$1.ico&type=ico [L,QSA]
----------
編集:多分私はこれを別の方法でやるべきですか?大企業はキャッシュに何を使用し、キャッシュの有効期限が切れる前にブラウザーに更新されたコンテンツを取得させるにはどうすればよいでしょうか?
編集2:助けてくれてありがとう。私は1時間のキャッシュで行きます