目前,我的网站采用了一个缓存系统,其中生成新请求的页面,然后即时缓存以便将来更快地执行。整体格式是伪代码:
See if cached page exists.
If cached page exists then
Load cached page
Exit
If cached page does not exist then
Generate page
Save output to cache file
Exit
每个新请求的页面需要250到500毫秒的加载时间,每个缓存的页面需要100到200毫秒的加载时间。
我想要做的是每次手动网站更新,我想预先缓存页面(我认为它叫做缓存启动)。
我的缓存系统是用PHP完成的,我想过制作一个包装PHP脚本,调用主脚本生成带有适当参数的网页。在Code中,这是我的想法:
<?php
//wrapper script to pre-cache 500 pages
for ($sect=1;$sect<500;$sect++){
$_GET['param1']="sectiontocache";
$_GET['sectionno']=$sect;
include "index.php";
}
?>
和index.php(需要大量内存)根据输入参数输出正确的HTML。
我觉得如果我这样做,我要么在服务器上造成巨大负担,要么收到内存不足错误,因为在每次网站更新时,至少需要缓存100到500页才能提供最佳性能在任何客户提出的每一个请求上。
如果我可以做这样的事情:
<?php
//wrapper script to pre-cache 500 pages
for ($sect=1;$sect<500;$sect++){
$_GET['param1']="sectiontocache";
$_GET['sectionno']=$sect;
include "index.php";
declude "index.php";
}
?>
然后我会很高兴。
是的我知道declude不是一个有效的关键字,但我想说的是我想在处理后从索引脚本中释放内存,所以我不会遇到错误。< / p>
我只是想知道我是否仍然应该使用我展示的第一个PHP脚本,并祈祷服务器不会崩溃,或者如果在我的情况下预先缓存页面是更好的官方方式。
答案 0 :(得分:-1)
我建议你这个解决方案:
创建一个包含javascript计时器的页面(假设您需要1秒才能生成一个页面):
每1秒,通过javascript刷新页面,包括下一个$ sect作为GET参数。
在php代码中获取参数值,生成页面。
在Javascript中,添加条件以停止流程,如果$ sect if&gt; 500
我希望我的解释清楚。