最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

关于网站生成静态html文件的两种方案思考

PHP 4069浏览 2评论

关于网站生成静态文件有利有弊,通常来讲交互性的站点不太适合静态化,如社交网站,论坛之类的站点等等。如果以资讯内容展示为主,生成静态文件能够很好的提高服务器吞吐量。下面提供两种生成静态文件的方案,分析下其中的利和弊。

1、后台增加生成静态页面功能

优点

  • 这种方案在技术实现上比较简单,就是在后台增加生成静态的功能,例如生成首页、生成列表页、生成内容页面等。很多cms都提供静态文件生成的功能,例如织梦、帝国cms。
  • 用户访问的都是静态页面,服务器负载非常低。

缺点

  • 当网站内容比较少的时候,生成静态页面非常快速。可是当内容成千上万的时候,如果要进行全站更新,就力不从心了。这个是最大的弊端。
  • 必须由管理员去点击生成功能,增加了人工成本。
  • 生成的很多页面都没人访问,浪费磁盘空间。例如文章列表页,一般前几页访问比较多,再后面的几乎都没有人访问。

2、由用户触发生成

这种方案大概是这样:例如有一个文章内容页面/article/1.html,当用户还没有访问的时候这个静态文件是不存在的,只有当用户访问后该静态文件才会生成。这种方案需要使用重写功能,先检测文件是否存在,如果不存在则转发到一个动态的页面,在动态的页面生成该文件。很多框架都提供了这样的功能,如ThinkPHP、zend framework。以下是流程图:

静态文件生成流程图

静态文件生成流程图

优点

  • 生成静态页面是由用户触发的,减少了管理员操作。
  • 只生成用户访问的页面,大大减少了硬盘空间的占用。

缺点

  • 涉及到了重写功能、正则表达式,技术实现要求更高。
  • 因为用户第一次访问的时候,是访问动态的文件,所以对动态功能的性能有一定要求。
  • 因为静态文件的生成由用户访问触发,所以静态文件如何更新是个大问题了。比较常见的做法就是定期删除静态文件。

这里附上这种方案的示例代码,运行环境采用apache,放在www根目录下,在浏览器里访问http://localhost/article/1.html就可以看到效果了。点击下载:静态文件生成方案示例代码

小结

如果技术实力雄厚,建议采用第二种,一劳永逸的办法。如果说站点内容不多,那么采用第一种方案可以节省开发时间,也是一种选择。以后站点发展好了,有了更多资金再考虑换成第二种。

现在随着硬件越来越强悍,内存越来越便宜,几十G都很普遍了,也可以把页面缓存到内存,连磁盘读写都省了。笔者用过64G内存的服务器,缓存的很舒服。

转载请注明:快乐编程 » 关于网站生成静态html文件的两种方案思考

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 还可以由用户点击生成这种还真没有想过!
    英文网站seo5年前 (2013-01-22)回复
  2. 对代码知识了解太少了,看来以后要多学习了
    水晶灯5年前 (2013-01-23)回复