平面文件缓存,零停机时间

时间:2011-12-01 01:51:27

标签: php caching

每次将新内容发布到我的网站时,我都会为我网站的前5页重新生成平面文件缓存。这很好用,大大减少了服务器负载。

问题在于,每次重新生成文件缓存时,我都会看到流量略有下降,大概是因为浏览网站的~2500人中有一小部分但不可忽略的百分比看到了一半生成的页面。

我想知道在php中生成这些缓存页面的更好方法是没有任何用户看到半页写入的风险。

修改

以下是我的.htaccess文件中确定是否加载缓存文件的部分:

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]

2 个答案:

答案 0 :(得分:0)

我建议使用memcache解决方案。似乎你可以很快编写你的缓存而不必使用平面文件方法。记忆!

答案 1 :(得分:0)

当您执行清除缓存时,Symfony会遭受同样的痛苦。为了避免这个问题,我们预先加热了缓存。请考虑以下事项:

  • 创建临时目录(确保设置正确的权限):cache_temp

  • 添加代码以识别触发器。如果触发器可用,则将cache dir设置为cache_temp(而不是cache_current)。通过http:http://mydomain.com?prewarm=1

  • 触发示例
  • 代码将知道在cache_temp中生成所有缓存文件而不是cache_current

  • 将cache_current重命名为cache_old

  • 将cache_temp重命名为cache_current

  • 删除cache_old