1 日ごとに異なる画像を送信する php スクリプトがあります。日中に画像をキャッシュしたいのですが、すべてのリクエストで 200 OK が返されるため、スクリプトが期待どおりに機能しません。
コードは次のとおりです。
<?php
$uno = '1.jpg';
$dos = '2.jpg';
$tres = '3.jpg';
$cuatro = '4.jpg';
$cinco = '5.jpg';
$seis = '6.jpg';
$siete = '7.jpg';
$today=date(l);
header('Content-Disposition: inline');
header('Content-Type: image/jpg');
header("Content-Transfer-Encoding: Binary");
$expire=60*60*24*1; // seconds, minutes, hours, days
header('Pragma: public');
header('Cache-Control: maxage='.$expire);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expire) . ' GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
// Find what today is? using date function
if($today==Monday){
readfile($uno);
exit;
}
elseif($today==Tuesday){
readfile($dos);
exit;
}
elseif($today==Wednesday){
readfile($tres);
exit;
}
elseif($today==Thursday){
readfile($cuatro);
exit;
}
elseif($today==Friday){
readfile($cinco);
exit;
}
elseif($today==Saturday){
readfile($seis);
exit;
}
elseif($today==Sunday){
readfile($siete);
exit;
}
?>
これの何が問題なのですか?
アップデート:
WebnetMobile.comが言うようにコードをリファクタリングしようとしましたが、それでも 200 OK が返されるため、キャッシングの問題は存続しているようです。
新しいコードは次のとおりです。
<?php
$today=date("l");
header('Content-Disposition: inline');
header('Content-Type: image/jpg');
header("Content-Transfer-Encoding: Binary");
$expire=60*60*24*1;// seconds, minutes, hours, days
header('Pragma: public');
header('Cache-Control: maxage='.$expire);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expire) . ' GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
// Find what today is? using date function
$map = array( 'Monday' => '1.jpg',
'Tuesday' => '2.jpg',
'Wednesday' => '3.jpg',
'Thursday' => '4.jpg',
'Friday' => '5.jpg',
'Saturday' => '6.jpg',
'Sunday' => '7.jpg'
);
readfile( $map[ $today ] );
?>