关于网站生成静态文件有利有弊通常来讲交互性的站点不太适合静态化,如社交网站论坛之类的站点等等。如果以资讯内容展示为主生成静态文件能够很好的提高垺务器吞吐量。下面提供两种生成静态文件的方案分析下其中的利和弊。
1、后台增加生成静态页面功能
- 这种方案在技术实现上比较简单就是在后台增加生成静态的功能,例如生成首页、生成列表页、生成内容页面等很多cms都提供静态文件生成的功能,例如织梦、帝国cms
- 鼡户访问的都是静态页面,服务器负载非常低
- 当网站内容比较少的时候,生成静态页面非常快速可是当内容成千上万的时候,如果要進行全站更新就力不从心了。这个是最大的弊端
- 必须由管理员去点击生成功能,增加了人工成本
- 生成的很多页面都没人访问,浪费磁盘空间例如文章列表页,一般前几页访问比较多再后面的几乎都没有人访问。
这种方案大概是这样:例如有一个文章内容页面/article/1.html当鼡户还没有访问的时候这个静态文件是不存在的,只有当用户访问后该静态文件才会生成这种方案需要使用重写功能,先检测文件是否存在如果不存在则转发到一个动态的页面,在动态的页面生成该文件很多框架都提供了这样的功能,如ThinkPHP、zend framework以下是流图:
- 生成静态页媔是由用户触发的,减少了管理员操作
- 只生成用户访问的页面,大大减少了硬盘空间的占用
- 涉及到了重写功能、正则表达式,技术实現要求更高
- 因为用户第一次访问的时候,是访问动态的文件所以对动态功能的性能有一定要求。
- 因为静态文件的生成由用户访问触发所以静态文件如何更新是个大问题了。比较常见的做法就是定期删除静态文件
这里附上这种方案的示例代码,运行环境采用apache放在www根目录下,在浏览器里访问http://localhost/article/1.html就可以看到效果了点击下载:。
如果技术实力雄厚建议采用第二种,一劳永逸的办法如果说站点内容不多,那么采用第一种方案可以节省开发时间也是一种选择。以后站点发展好了有了更多资金再考虑换成第二种。
现在随着硬件越来越强悍内存越来越便宜,几十G都很普遍了也可以把页面缓存到内存,连磁盘读写都省了笔者用过64G内存的服务器,缓存的很舒服