Php 零停机时间的平面文件缓存
每次新内容发布到我的站点时,我都会重新生成站点前5页的平面文件缓存。这非常有效,并大大降低了服务器负载 问题是,每次重新生成文件缓存时,我都会看到流量略有下降,大概是因为在浏览该网站的约2500人中,有一小部分人看到了生成页面的一半 我想知道在php中生成这些缓存页面的更好方法是什么,而不会让用户看到写了一半的页面 编辑: 以下是my.htaccess文件中确定是否加载缓存文件的部分:Php 零停机时间的平面文件缓存,php,caching,Php,Caching,每次新内容发布到我的站点时,我都会重新生成站点前5页的平面文件缓存。这非常有效,并大大降低了服务器负载 问题是,每次重新生成文件缓存时,我都会看到流量略有下降,大概是因为在浏览该网站的约2500人中,有一小部分人看到了生成页面的一半 我想知道在php中生成这些缓存页面的更好方法是什么,而不会让用户看到写了一半的页面 编辑: 以下是my.htaccess文件中确定是否加载缓存文件的部分: RewriteCond %{HTTP_COOKIE} (user) RewriteRule (.*)? - [
RewriteCond %{HTTP_COOKIE} (user)
RewriteRule (.*)? - [S=3] # Skip the below 2 lines if the above test passes
RewriteRule ^$ app/webroot/cache_static_html/cache_static_popular_results_1.php [L]
RewriteRule ^popular/page:([2-9])$ app/webroot/cache_static_html/cache_static_popular_results_$1.php [L]
我建议使用memcache解决方案。似乎您可以非常快速地写入缓存,而不必使用平面文件方法。去回忆吧 Symfony在执行清除缓存时也会遭受同样的痛苦。为了避免这个问题,我们对缓存进行了预热。考虑以下事项:
- 创建临时目录(确保设置正确的权限):cache\u temp
- 添加代码以识别触发器。如果触发器可用,则将cache dir设置为cache_temp(而不是cache_current)。通过http的触发器示例:
- 代码将知道在cache_temp中生成所有缓存文件,而不是cache_current
- 将当前缓存重命名为旧缓存
- 将cache_temp重命名为cache_current
- 删除旧缓存