php - 我需要 .htaccess 来缓存 php 页面,并在每小时开始时使它们过期 (xx :00:00)

标签 php apache .htaccess caching mod-expires

我想缓存一些在每小时开始时显示不同数据的 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);

在每一页的顶部。

最佳答案

可以用 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)); 
?>

关于php - 我需要 .htaccess 来缓存 php 页面,并在每小时开始时使它们过期 (xx :00:00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8958285/

相关文章:

apache - 拒绝子目录 htaccess 中的所有内容,而不是覆盖根 htaccess 中的文件规则

php - PHP 代码中的较大文本

php - 在 Woocommerce 3 中获取退款订单和退款订单商品详情

apache 虚拟主机和 "Dynamic"域

linux - 有没有办法以非root用户身份在linux上启动/重启/停止apache服务器?

php - 我需要使用 .htaccess 将自定义单词添加到我的 URL 中

php - 尝试 require_once() 同一目录中的文件时出现 fatal error

php - 将文本文件加载到 mysql 数据库中并为每一行添加时间戳

php - .htaccess 只允许图像

apache - htaccess 在我尝试打开页面时显示错误