Мне нужен .htaccess для кэширования php-страниц и истечения срока их действия в начале каждого часа (xx: 00: 00) - PullRequest
2 голосов
/ 22 января 2012

Я хочу кэшировать несколько страниц php, которые отображают разные данные в начале каждого часа (xx: 00: 01)?

До сих пор я нашел способ кэширования страницы +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);

Вверху каждой страницы.

Ответы [ 2 ]

2 голосов
/ 22 января 2012

можно сделать с помощью 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)); 
?>
1 голос
/ 22 января 2012

Один из вариантов - настроить работу cron на час. Вы можете обновить статические html-файлы, если хотите, а Apache сможет их обслуживать.

(Это не решение на основе .htaccess.)

...