靜態(tài)化部分網(wǎng)頁(yè)提高網(wǎng)站體驗(yàn)和seo表現(xiàn)
最近,在Google網(wǎng)站管理員工具中觀察到自己的一些網(wǎng)站平均加載速度都變得很糟糕,開(kāi)始想辦法優(yōu)化,自然想到網(wǎng)頁(yè)靜態(tài)化。
先看下靜態(tài)網(wǎng)頁(yè)相對(duì)動(dòng)態(tài)網(wǎng)頁(yè)的一些優(yōu)點(diǎn)和缺點(diǎn),也是我在考慮解決方法過(guò)程中衡量的問(wèn)題。
靜態(tài)網(wǎng)頁(yè)的優(yōu)點(diǎn):
1、訪問(wèn)速度快,耗服務(wù)器資源少。
2、網(wǎng)站與數(shù)據(jù)庫(kù)分離,數(shù)據(jù)庫(kù)宕掉時(shí)網(wǎng)站還能正常運(yùn)行。
3、對(duì)搜索引擎友好,利于網(wǎng)站seo。
缺點(diǎn):
1、快速消耗硬盤(pán)空間,尤其是內(nèi)容多的站點(diǎn)。
2、舊網(wǎng)頁(yè)不能自動(dòng)更新內(nèi)容,除非重新生成網(wǎng)頁(yè)文件。
3、生成網(wǎng)頁(yè)文件(特別大量)消耗資源,而且無(wú)法保證成功生成每個(gè)頁(yè)面。
當(dāng)然,對(duì)于博客這一類內(nèi)容少的個(gè)人站點(diǎn),全站生成在操作成本和資源消耗上都不高,在具備靜態(tài)化功能的前提下完全可以采用這個(gè)方案來(lái)優(yōu)化站點(diǎn)。
本站是自己寫(xiě)的代碼,沒(méi)有完美的全站靜態(tài)化功能,我也不打算花時(shí)間再去開(kāi)發(fā)功能,從節(jié)約成本和提高效率考慮,我打算用部分頁(yè)面靜態(tài)化來(lái)達(dá)到優(yōu)化網(wǎng)站訪問(wèn)速度和體驗(yàn)。
一般來(lái)說(shuō),首頁(yè)和分類頁(yè)面是訪問(wèn)頻率高、耗資源多、離用戶和搜索引擎最近的頁(yè)面,能靜態(tài)化是最佳選擇。再者這類頁(yè)面數(shù)量少、URL格式也比較固定,容易統(tǒng)一快速處理。這里有兩個(gè)例子:
1、本站首頁(yè)靜態(tài)化
我用的是smarty模板引擎,很方便輸出頁(yè)面內(nèi)容。在php程序中把原先輸出網(wǎng)頁(yè)的語(yǔ)句去掉:
- $tpl->display('index.tpl');改成生成文件的代碼即可:
- file_put_contents('./index.html', $tpl->fetch('index.tpl') );還可以順便去除多余空格和換行:
- //清除空格
- preg_replace('/[\n\r\t]/', ' ', $html)
- //清除換行
- preg_replace('/\s(?=\s)/', '', $html)
至此,完成首頁(yè)的靜態(tài)化,最終效果見(jiàn)本站首頁(yè)代碼。在添加新文章的時(shí)候異步執(zhí)行下這段代碼,即可更新首頁(yè),不想改動(dòng)程序的話,手動(dòng)執(zhí)行下也很快。
2、通用部分網(wǎng)頁(yè)靜態(tài)化方法
知名博客程序Wordpress似乎并未使用全站靜態(tài)方案,即便有相關(guān)第三方插件,用起來(lái)也有諸多不便。而這樣完整的開(kāi)源程序不適合手動(dòng)去改,難度大而且不利于日后升級(jí)。
對(duì)于這類不方便直接修改程序的網(wǎng)站,我考慮的部分頁(yè)面靜態(tài)化方法是整理出首頁(yè)和分類頁(yè)的絕對(duì)地址,直接使用file_get_content獲取代碼再生成文件。代碼如下:
- $urlList = array(
- 'http://www.sky84.cn/index.php/article_list_cat,6.html',
- 'http://www.sky84.cn/index.php/article_list_cat,9.html',
- 'http://www.sky84.cn/index.php/article_list_cat,11.html'
- );
- foreach ($urlList as $v) {
- file_put_contents('article_list_cat,6.html', file_get_contents($v));
代碼只有基本的思路,具體細(xì)節(jié)依據(jù)網(wǎng)站自身?xiàng)l件處理。
這些方法可以最快、最方便地實(shí)現(xiàn)網(wǎng)頁(yè)靜態(tài)化帶來(lái)的優(yōu)點(diǎn),但僅適用于個(gè)人博客或者小站暫時(shí)性優(yōu)化,若是大站,應(yīng)對(duì)大訪問(wèn)量負(fù)載和搜索引擎優(yōu)化,就要從網(wǎng)站整體設(shè)計(jì)一套合適的頁(yè)面靜態(tài)化和優(yōu)化方案。
【編輯推薦】