V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
samin
V2EX  ›  程序员

服务端渲染的静态页面如何进行 CDN 加速

  •  
  •   samin · 2021-10-19 17:36:55 +08:00 · 2804 次点击
    这是一个创建于 891 天前的主题,其中的信息可能已经有所发展或是发生改变。

    纯静态的静态资源只要上传到 CDN 平台就可以进行加速。但是对于服务端渲染后的静态页面( 比如可配置标题的 html 首页,需要后台渲染 ),因为界面是需要通过服务器进行渲染才可以拿到的,所以无法通过服务器直接进行 CDN 加速,我目前做法是:

    每一次在后台进行业务修改,触发页面渲染,把产生的纯静态文件通过 api 上传到 CDN 平台拿到加速链接,传给给前端界面

    感觉这种方式有点投机取巧,比较 low,请问下业内有什么比较好的方案吗 ?

    16 条回复    2021-10-20 11:32:29 +08:00
    eason1874
        1
    eason1874  
       2021-10-19 17:39:54 +08:00
    CDN 根据文件目录或者后缀,缓存问题,可以把版本 hash 加在文件路径上
    dengjscn
        2
    dengjscn  
       2021-10-19 17:51:48 +08:00
    CDN 也是要靠多节点实现加速的,自然你也可以搞多台服务,分别部署在几个大区,主机进行分发
    dengjscn
        3
    dengjscn  
       2021-10-19 17:52:00 +08:00
    我的拙见
    samin
        4
    samin  
    OP
       2021-10-19 17:53:53 +08:00
    @dengjscn 感谢 这个确实是 CDN 的本质 我的问题是想知道基于已有的 CDN 平台,我相信没多少个企业可以建立自己的 CDN 系统吧 😂
    zktz
        5
    zktz  
       2021-10-19 18:10:13 +08:00
    你可以更新一次就调用一次 CDN 厂商的刷新接口。
    你所谓的上传是什么意思? 相当于 CDN 厂商的预热?
    tabris17
        6
    tabris17  
       2021-10-19 18:17:22 +08:00
    > 因为界面是需要通过服务器进行渲染才可以拿到的,所以无法通过服务器直接进行 CDN 加速
    ==============

    为什么?是什么让你产生这种误解?
    oxromantic
        7
    oxromantic  
       2021-10-19 18:46:47 +08:00
    为什么?是什么让你产生这种误解?

    ps: 你缺少的只是一些 ETag 、缓存声明之类,看看 2 种 response 的 header 差异吧
    opengps
        9
    opengps  
       2021-10-19 21:55:11 +08:00
    既然是动态生成的静态内容,那么你完全可以将动态地址单独发布一个站点,把这个站点加速
    zoharSoul
        10
    zoharSoul  
       2021-10-19 23:01:10 +08:00
    应该没办法了. 这种情况下套 cdn 纯粹是线路上的优化, 缓存基本没用.
    zoharSoul
        11
    zoharSoul  
       2021-10-19 23:02:27 +08:00
    @zoharSoul #10 哦, 没我理解的那么动态. 我以为用户交互就会发生改变, 当我没说.
    huangsen365
        12
    huangsen365  
       2021-10-19 23:10:33 +08:00
    设置 header 的 Cache-Control
    参考阿里云的文档 或者 其它 CDN 厂商文档 https://help.aliyun.com/document_detail/27137.html#title-jko-z97-6rp
    甚至直接自己动手通过 curl 命令去参考大厂的
    curl -I https://www.taobao.com | grep -i cache-control
    curl -I https://www.jd.com | grep -i cache-control
    lower
        13
    lower  
       2021-10-20 00:04:23 +08:00
    cdn 上传是什么意思?
    我用过阿里云的,只看到有配置源站的,,上传是到哪儿?
    zpfhbyx
        14
    zpfhbyx  
       2021-10-20 11:06:57 +08:00
    @lower 应该是扔到 oss 了. 然后 cdn 配置的回源到 oss
    samin
        15
    samin  
    OP
       2021-10-20 11:21:46 +08:00
    @lower 这里可能说得不够清楚,一般 CDN 配置的是站点,所谓的上传,其实就是把动态渲染好的静态资源,传输到那个站点,不好意思,说得太业余 😂
    ysc3839
        16
    ysc3839  
       2021-10-20 11:32:29 +08:00
    你确定这是 CDN ? CDN 为什么要手动上传?不是自动从服务器拉取的吗?
    如果是静态文件托管服务,那没办法,只能修改后上传。
    如果是真的 CDN,配置 cache-control 响应头,让 CDN 缓存即可,更新后去 CDN 后台手动刷新缓存。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1029 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.