资讯类CMS程序生成HTML方式的利与弊?

2013-11-16 06:04:05 +08:00
 richiefans
一直在做资讯类的站点,php此类开源程序比较多,我们在用的也是在一个开源cms程序上二次开发的
最开始 选用的方式 就是生成HTML的方式
那么有很多站长也非常喜欢这种“原生”静态化的方式,到现在遇到越来越多的麻烦
在内容量越来越大的情况下出现如下问题

弊端:

1.更新HTML不及时
-发布内容后 所属列表-》频道 都需要生成HTML (后台有设置 可以自动触发生成)
2.更新速度慢
-100万文章生成后的静态页面文件大小就要几十个GB,如果遇到改版之类的事情,可能全站要生成,消耗的时间可能要以“天”为单位,(局部信息用了SSI 如果不是大改版 像页面右侧等位置得更新是没有问题的)

优势:
1.通过生成静态页后 进行部署 在大访问量情况下 消耗较低
2.后端php、DB性能不会对前端进行影响

总之目前来看 更喜欢的动态机制 前端加cache的方式,灵活性更大
目前开源程序主要的方式还是通过页面触发生成html,在考虑改成php-cli的方式放到后端来执行 不知道是否能够提升效率

也希望大家能够给出点“点子”,看看如何维护这样的站点比较好
5661 次点击
所在节点    PHP
18 条回复
lhx2008
2013-11-16 08:51:30 +08:00
我觉得是给那些性能渣的空间用的,vps以上完全没必要
richiefans
2013-11-16 09:55:32 +08:00
@lhx2008 也不完全是吧 我看到不少大点的站也应该是生成HTML的 都是用独服的
fen
2013-11-16 11:18:35 +08:00
有些网站是用伪装成生成 html
family
2013-11-16 11:36:36 +08:00
html做交互体验极差 用动态做缓存不就好啦
richiefans
2013-11-16 12:20:03 +08:00
@family 对于已有项目的迁移成本比较高,主要还是从seo来考虑 已经有上百万的静态页地址被收录

做rewrite的话 不知道要做多少了
lhx2008
2013-11-16 12:28:17 +08:00
@richiefans cms有提供相关的解决方案的吧,没有就好麻烦,不过rewrite也不会很多,nginx下面的话
Ricepig
2013-11-16 12:39:23 +08:00
可以选择有访问的时候生成静态阿
akira
2013-11-16 13:44:00 +08:00
首页 热门页面静态,其他动态。
kstsca
2013-11-16 14:03:39 +08:00
我还是喜欢分发式的静态页面 一个母机 多台子机机构部署。

关于全站生成不赞成,参考新浪 网易,根本就不管的
shiny
2013-11-16 14:17:26 +08:00
一开始小站可以用全站静态,到后期可以用伪静态,源是动态,CDN 是静态。
msg7086
2013-11-16 14:29:40 +08:00
一百万文章如果塞进wp的话服务器早就挂了
046569
2013-11-16 17:03:50 +08:00
LZ没有说"大访问量"是多大,另外也不知道具体的网站程序,基本只能靠猜了.
我觉得若不是因为安全原因,没有必要生成静态页了,PHP的效率不错了.更多的时候,你要找出瓶颈,到底哪最慢?哪慢哪开缓存嘛~不能光靠猜,要靠数据去验证.
迁移的问题,除了rewrite以外,也可以考虑引入router系统.更多的成本还是在开发上,二次开发有时候并不省力.
richiefans
2013-11-16 17:46:38 +08:00
@045569
目前的量大概是 日均100万uv 300wpv左右

现在静态的目录结构 大概是/父目录/子目录/子目录/.../文章id.html

现在在想如果要做rewrite的话 只能是判断末位/([0-9])+.html$ rewrite到news.php来处理

然后前端生成的url地址可以保持不变 这样基本可以保证现在的url不变


用的是phpcms2008二次开发的
richiefans
2013-11-16 17:48:27 +08:00
目前采用的方式 是后端服务器主要给编辑用 然后用sersync来进行同步到前端,前端nginx基本只负责静态页的处理,现在遇到的问题就是生成速度过慢
@Ricepig 的建议倒是挺好的,可以放一个请求来判断该页面是否过期 过期的话就再次生成

谢谢大家的思路 很有启发
lusin
2013-11-16 18:51:25 +08:00
厉害

请问100万uv,300万pv alexa排名能到多少呢?
danial
2013-11-16 19:41:28 +08:00
可以考虑用简单PHP代码加载可重用的内容HTML部件。生成的HTML是内容部分,分块的,页面中简单PHP夹在这些HTML内容。应该会快些,更新模版设置的时候,生成部分没有那么大。
alex321
2013-12-05 10:47:20 +08:00
我们有个站点的流量类似。目前采用的是全站静态化发布 + cdn 的方式。但遇到一个问题,就是每逢改变模板就需要重新大批量发布,发布性能低下。
按照我的计划,将来可能会逐步采用 lvs 轮询 + 代理服务器 + 缓存服务器和应用与数据服务器 + cdn 的形式。需要大批量更新模板时,计划切换到动态模式优先相应新模板,同时后端热备的应用于数据服务器开启批量发布任务,全部发布完成后热备切换上线。
里面涉及到的动态内容,比如点击量、评论内容的处理都采用异步。
richiefans
2013-12-06 13:52:20 +08:00
@alex321 目前和我的情况类似

目前还没有尝试过多改造工作,依然是后端+前端+cdn,一些动态的部分是ajax,一些全站经常变的东西是通过ssi来实现

后端主要是库操作+createhtml 然后rsync到前端

有一个想法是启用一个更新机制 可以在批量更新模板时打开,由用户触发放到消息队列里么,然后跑一个程序来更新消息队列里面需要更新的文件

平时是关掉这个请求的

这样对于没有访问的老模板就先不更新

大家可以多沟通交换下思路

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89481

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX