静态化部分网页提高网站体验和seo表现
最近,在Google网站管理员工具中观察到自己的一些网站平均加载速度都变得很糟糕,开始想办法优化,自然想到网页静态化。
先看下静态网页相对动态网页的一些优点和缺点,也是我在考虑解决方法过程中衡量的问题。
静态网页的优点:
1、访问速度快,耗服务器资源少。
2、网站与数据库分离,数据库宕掉时网站还能正常运行。
3、对搜索引擎友好,利于网站seo。
缺点:
1、快速消耗硬盘空间,尤其是内容多的站点。
2、旧网页不能自动更新内容,除非重新生成网页文件。
3、生成网页文件(特别大量)消耗资源,而且无法保证成功生成每个页面。
当然,对于博客这一类内容少的个人站点,全站生成在操作成本和资源消耗上都不高,在具备静态化功能的前提下完全可以采用这个方案来优化站点。
本站是自己写的代码,没有完美的全站静态化功能,我也不打算花时间再去开发功能,从节约成本和提高效率考虑,我打算用部分页面静态化来达到优化网站访问速度和体验。
一般来说,首页和分类页面是访问频率高、耗资源多、离用户和搜索引擎最近的页面,能静态化是最佳选择。再者这类页面数量少、URL格式也比较固定,容易统一快速处理。这里有两个例子:
1、本站首页静态化
我用的是smarty模板引擎,很方便输出页面内容。在php程序中把原先输出网页的语句去掉:
$tpl->display('index.tpl');改成生成文件的代码即可: file_put_contents('./index.html', $tpl->fetch('index.tpl') );还可以顺便去除多余空格和换行: //清除空格 preg_replace('/[\n\r\t]/', ' ', $html) //清除换行 preg_replace('/\s(?=\s)/', '', $html)
至此,完成首页的静态化,最终效果见本站首页代码。在添加新文章的时候异步执行下这段代码,即可更新首页,不想改动程序的话,手动执行下也很快。
2、通用部分网页静态化方法
知名博客程序Wordpress似乎并未使用全站静态方案,即便有相关第三方插件,用起来也有诸多不便。而这样完整的开源程序不适合手动去改,难度大而且不利于日后升级。
对于这类不方便直接修改程序的网站,我考虑的部分页面静态化方法是整理出首页和分类页的绝对地址,直接使用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));