2

毎正時 (xx:00:01) に異なるデータを表示する多数の PHP ページをキャッシュしたいですか?

これまでのところ、アクセス (またはファイルの変更) から +1 時間後にページをキャッシュする方法を見つけましたが、ユーザーが xx:59:00 にページにアクセスすると、xx+1:00:01 にページにアクセスします。 、新しく表示されたデータではなく、キャッシュされたページデータが表示されます。

できれば .htaccess を使用して、定期的な「トップオブザアワー」キャッシュの有効期限を取得するには、何を書く必要がありますか?

最終的なコード (非 htaccess):

$nexthour = mktime(date("H")+1, 00, 20) - mktime();
header("Cache-Control: public, must-revalidate, max-age=".$nexthour.", s-maxage=".$nexthour);

各ページの上部にあります。

4

2 に答える 2

2

htaccessで行うことができますが、ちょっと面倒です。

RewriteCond %{TIME_WDAY} ^0$
RewriteCond yourfile.php - [E=daystring:SUN]
#etc (7x)

RewriteCond %{TIME_MON} ^0$
RewriteCond yourfile.php - [E=monthstring:JAN]
#etc (12x)

Header set "Expires" "%{daystring}, %{TIME_DAY} %{monthstring} %{TIME_YEAR} %{TIME_HOUR}:59:59 GMT "

PHP自体でこれを行う方が良いです(session_start()の後)。

<?php
$nexthour = mktime (date("H"), 59, 59);
header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', $nexthour)); 
?>
于 2012-01-22T13:05:21.603 に答える
1

1 つのオプションは、正時に実行するように cron ジョブを設定することです。気になるすべての静的htmlファイルを更新してから、Apacheにそれらを提供させることができます。

(これは .htaccess ベースのソリューションではありません。)

于 2012-01-22T03:00:37.527 に答える