golang template 模板性能怎样呢?有相关对比的文章吗?与静态 html 文件比起来相差多少呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
sciel
V2EX    Go 编程语言

golan template 模板性能怎样呢?有相关对比的文章吗?与静态 html 文件比起来相差多少呢?

  •  
  •   sciel 2022-03-26 11:06:14 +08:00 3343 次点击
    这是一个创建于 1345 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设一个小说网站,走 template 模板方式的话,模块操作里面就去 redis 缓存获取一下数据最后渲染生成 html 返回展示。

    走 html 方式的话,就需要一开始生成所有章节页面的 html 文件。

    想请问这两种方式就加载一个页面的速度来说的话相差会是多少呢?如果有相关解说文章就更好啦。
    13 条回复    2022-03-31 13:09:57 +08:00
    seakingii
        1
    seakingii  
       2022-03-26 11:23:19 +08:00   1
    如果光是”模板“这个很简单,你自己写个代码例子测试一下不就清楚了。

    实际上问题会更复杂,比如你要根据模板生成,你的数据来源要快,假如你数据库放国内,生成服务器放国外,那就慢的不得了(实际上可能不会这么极端),那样的话,先在本地生成所有的 HTML 再上传会更好。

    还有就是服务器的 CPU 性能,内存性能等。如果是垃圾服务器,那也是先生成 HTML 比较好。

    如果数据来源够快,我是建议用 模板生成,那样单个即时生成所费的时间很小,毫秒级别。再加上各种缓存(缓存在磁盘上,REDIS 中,CDN 中),能大大缓存生成压力。模板即时生成的最大好处就是可以随时修改样式模板,随后再次访问就是新的样式了。也不用随便小修改就要重新生成一次所有页面,那可能会费很多时间。
    xiaoyiyu
        2
    xiaoyiyu  
       2022-03-26 11:39:49 +08:00 via iPhone   1
    pca7a2
        3
    pca7a2  
       2022-03-26 14:35:26 +08:00
    建议还是前后端分离,适合分工。
    Jooooooooo
        4
    Jooooooooo  
       2022-03-26 15:01:24 +08:00
    这...到了考虑这种东西的性能问题的时候吗.

    数据库稍微设计合理点性能提升估计要比这个大一万倍.
    keepeye
        5
    keepeye  
       2022-03-26 15:09:14 +08:00   1
    性能测试可以参考 2 楼,再说静态文件,如果服务器磁盘垃圾 html 还真不一定有 go 模板渲染快,别忽略了磁盘 io 瓶颈,不建议生成 html ,go 没那么慢,等你遇到瓶颈了花钱加服务器都是开心的
    Goat121
       
    Goat121  
       2022-03-26 15:15:13 +08:00
    你问的实际上不是 template 包的问题,是采用服务端渲染或前端渲染的问题。
    对于服务端来说,返回 json 还是 html 性能差距微乎其微。
    前端渲染的性能,视客户端环境和执行的 js 代码可能会慢上数秒,但现代浏览器都会预编译 js 并缓存,实际上只会在你第一次打开网页时有影响。
    采用服务端渲染一般都是为了做 seo ,但会极大增加代码耦合度。某些大厂的做法是再加一层,服务端返回 json 到中间层渲染为 html ,再返回给客户端。除了工作量大增之外,啥都好。
    看你用户量和开发人员具体做技术选型把
    Goat121
        7
    Goat121  
       2022-03-26 15:16:48 +08:00
    @Goat121 抱歉 没看清楚贴。无视我吧
    sciel
        8
    sciel  
    OP
       2022-03-26 15:19:04 +08:00
    @keepeye 有道理,可以愉快的使用模板啦
    buliugu
        9
    buliugu  
       2022-03-26 15:25:06 +08:00
    其实生成静态 html 直接走 cdn 分发也是一种方案,广告部分走动态请求就行,可以大幅减少主站的流量压力
    seakingii
        10
    seakingii  
       2022-03-26 15:26:20 +08:00
    楼主的这个问题我以前也经历过。

    两种做法各有各的好处,静态的最大好处在于,你任意一个 WEB 服务器都可以部署,甚至可以用 GITHUB 部署。。。

    如果用即时模板,坏处是要运行可执行程序,好处是可以再加一些动态功能,比如 搜索啥的。。
    WispZhan
        11
    WispZhan  
       2022-03-26 15:29:03 +08:00
    参考 hugo ?
    wonderfulcxm
        12
    wonderfulcxm  
       2022-03-26 17:02:01 +08:00 via iPhone
    小说网站,如果小说数量大的话,并且一个页面跟另一个页面有关联,列表分页,tag 页,主页等等。修改一次,整站重新生成一次得几百万上千万个页面。
    hugo 那种只适合个人博客这种小玩意
    veightz
        13
    veightz  
       2022-03-31 13:09:57 +08:00
    我觉得可以看业务的场景.. 看读写比例, 高频写的话, 是不是会经常构建, 导致代价较大?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     867 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 19:11 PVG 03:11 LAX 11:11 JFK 14:11
    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