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