V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
sciel
V2EX  ›  Go 编程语言

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

  •  
  •   sciel · 2022-03-26 11:06:14 +08:00 · 2907 次点击
    这是一个创建于 980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设一个小说网站,走 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
        6
    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   ·   实用小工具   ·   1055 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:25 · PVG 03:25 · LAX 11:25 · JFK 14:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.