资讯类CMS程序生成HTML方式的利与弊? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
richiefans
V2EX    PHP

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

  •  
  •   richiefans 2013-11-16 06:04:05 +08:00 6194 次点击
    这是一个创建于 4357 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直在做资讯类的站点,php此类开源程序比较多,我们在用的也是在一个开源cms程序上二次开发的
    最开始 选用的方式 就是生成HTML的方式
    那么有很多站长也非常喜欢这种“原生”静态化的方式,到现在遇到越来越多的麻烦
    在内容量越来越大的情况下出现如下问题

    弊端:

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

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

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

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

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

    关于全站生成不赞成,参考新浪 网易,根本就不管的
    shiny
        10
    shiny  
       2013-11-16 14:17:26 +08:00
    一开始小站可以用全站静态,到后期可以用伪静态,源是动态,CDN 是静态。
    msg7086
        11
    msg7086  
       2013-11-16 14:29:40 +08:00
    一百万文章如果塞进wp的话服务器早就挂了
    046569
        12
    046569  
       2013-11-16 17:03:50 +08:00   1
    LZ没有说"大访问量"是多大,另外也不知道具体的网站程序,基本只能靠猜了.
    我觉得若不是因为安全原因,没有必要生成静态页了,PHP的效率不错了.更多的时候,你要找出瓶颈,到底哪最慢?哪慢哪开缓存嘛~不能光靠猜,要靠数据去验证.
    迁移的问题,除了rewrite以外,也可以考虑引入router系统.更多的成本还是在开发上,二次开发有时候并不省力.
    richiefans
        13
    richiefans  
    OP
       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
        14
    richiefans  
    OP
       2013-11-16 17:48:27 +08:00
    目前采用的方式 是后端服务器主要给编辑用 然后用sersync来进行同步到前端,前端nginx基本只负责静态页的处理,现在遇到的问题就是生成速度过慢
    @Ricepig 的建议倒是挺好的,可以放一个请求来判断该页面是否过期 过期的话就再次生成

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

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

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

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

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

    平时是关掉这个请求的

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

    大家可以多沟通交换下思路
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2876 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:49 PVG 21:49 LAX 06:49 JFK 09:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86