2012-05-16 78 views
2

我已经创建了一个简单的CMS来为我的客户构建简单的网站。 cms是数据库驱动的。我想制作网站的离线/缓存/静态副本,以提高性能。缓存/离线网站脚本

有没有可用的PHP脚本,遍历一个网站,并创建一个静态的版本?

+0

为什么选择PHP?不会wget或httrack做什么? – Quentin

+0

我想自动化它,所以用户可以通过在cms中按“发布”来启动该过程。这就是为什么我希望PHP(cms是用PHP开发的)。 – Eydun

+0

@Eydun我的解决方案将允许这种方法 – Bloafer

回答

0

缓存,特别是在离线状态下,大多数现代浏览器都会自动进行缓存。由于PHP是服务器端语言,因此它仅限于“在线”端的效果。如果你想提高性能,你可以通过PHP自动尝试minifying你的资源。

如果你超意图在离线存储数据,你可以看到什么你可以适应cookie,但我真的不认为这是一种传统的方法。

编辑:

如果你的意思是使在服务器端静态页面,然后是。使用正确的权限,您可以使用fopen()和related functions创建和编辑页面。

1

亲自制作一个并将其集成到您的简单CMS中?

有很多的可能性,你可以使用像MemcacheAPC和只是由您的应用程序生成的纯静态文件。

由于您没有提供任何编写缓存的实际问题,因此您的问题非常模糊。但是,除了我提到的两个第一选择,一个简单的静态文件缓存可与file_get_contentsfile_put_contents和完成filemtime

例(散装):

<?php 


if(file_exists("/cache_dir/".$page_name) && (time() - filemtime("/cache_dir/".$page_name)) > 300) 
{ 
    $contents = file_get_contens("/cache_dir/".$page_name); 
} 
else 
{ 
    // getting the page contents 
    ob_start(); 

    //output your page 

    $contents = ob_get_clean(); 
    file_put_contens($contents, "/cache_dir/".$page_name); 
} 

echo $contents; 

?> 

这是一个短期和松散创建的例子,但它可能会帮助您了解如何制定适合您应用的解决方案。

1

你可以做很多事情来优化网站,最不经过网站并创建一个高速缓存,您可以编写自己的类,这是很简单的,或者你可以使用一个已经写好:

http://www.jongales.com/blog/2009/02/18/simple-file-based-php-cache-class/

它将工作的方式是第一次有人访问实时页面创建缓存如果缓存不存在,但是缓存确实存在则提供缓存版本

+0

如果您打算使用整页缓存,使用'ob_start();','ob_get_contents();'和'ob_end_clean();'http:// php.net/manual/en/function.ob-start.php – Bloafer