2012-05-16 103 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