php网站预加载或缓存

时间:2011-03-28 20:00:38

标签: php caching preloading

我有一个基于PHP的网站。 我使用开关盒包含不同的页面并导航。 我使用了一种方法,以便我的索引页面包含导航栏和页脚

我的问题是每次我从一个页面导航到另一个页面时,所有内容都会再次加载并使网站变得沉重。

<?php include('models/header.php'); ?>
<div id="content">
<center>

<div id="switch" align="center">

<?php
switch($view)
{
case 'Index':
    include('pages/index.php');
    break;

case 'Services':
    include('pages/Services.php');
    break;

case 'About':
    include('pages/about.php');
    break;

case 'Contact':
    include('pages/contact.php');
    break;

case 'Download':
    include('pages/download.php');
    break;

default:
    include('pages/error.php');
}
?>
</div>
</div>
</center>
<br>
<?php include('models/footer.php'); ?>
</div>

有没有办法可以设置它,以便这些元素预先加载一次并保留在缓存中,这样每次导航到新页面时都不需要加载它们??

3 个答案:

答案 0 :(得分:3)

鉴于您的代码,您实际上需要缓存任何内容,这样做可能会导致实际需要的更多开销。

缓存或未缓存,您仍然需要访问文件,您的收益将是操作码生成。但是PHP仍然需要访问文件系统,除非你使用memcached RAMFS解决方案,否则你不会注意到真正的变化。

但是,您确实需要缓存代码,出于显而易见的原因,您应该查看APC,这是PHP的操作码缓存。

基本上,它会缓存您对包含文件的调用并缓存PHP解释器结果。

最后,我实际建议您阅读 Best Practices for Speeding Up Your Web Site ,这将有助于您以更加显着的方式增强用户体验。

答案 1 :(得分:1)

如果浏览器选择,页面中的元素(如图像)将完全重新加载。如果您的元素是PHP文件,那么它们通常会在PHP页面经常更改时完全重新加载。

您可以在PHP中设置标题,告诉浏览器将页面缓存一段时间。有关详细信息,请参阅http://php.net/manual/en/function.header.php

答案 2 :(得分:0)

有很多不同的方法可以做到这一点。我建议使用Smarty。

switch(strtolower($view)) {
     case "download":
            $smarty->assign("download_var", $downloadvar);
            $smarty->display("Download.tpl");
            break;
     .....
}

<强>更新

我猜这有点模糊不清。 Smarty实际上有一个编译模板目录,它保持方便。您可以将smarty配置为以多种不同的方式进行缓存,但基本思想是您有一个基于会话ID预编译和存储的平面文件。