关于前端工程化与 K8S 结合的一些疑问

2021-08-31 00:48:57 +08:00
 sekfung

目前所有静态资源除了 html 已上传到 OSS,并做了 CDN,有个疑问:如何去访问 HTML 文件

  1. 反向代理通过 NFS 访问
  2. 前端容器启动一个 node server, 反向代理通过 http 访问

两个本质上还是远程访问的形式,或者有没有其他更好的方式

4012 次点击
所在节点    程序员
30 条回复
anyxchachapoly
2021-08-31 00:51:40 +08:00
我没看懂这和 k8s 有啥子关系,

还有, ”有没有更好的方式“ 这 depends on 需求啊
ss098
2021-08-31 00:53:07 +08:00
为什么要把 HTML 资源留在 K8S 上,一起传到 CDN 上啊。
sekfung
2021-08-31 01:20:37 +08:00
@ss098 #2 CDN 关闭 html 缓存吗?
ss098
2021-08-31 01:23:58 +08:00
现在你用反向代理解决的话(很有可能实际上)也是禁用缓存,放在 CDN 上速度不会更差的。
sekfung
2021-08-31 01:33:59 +08:00
@ss098 #4 这样的话,源站域名还得 proxy_pass 一次 CDN,中间还涉及 TLS 连接,首页渲染相对来说会比较慢吧,这样真的会比较好吗?
yompc
2021-08-31 01:36:39 +08:00
我静态资源和 html 全部放到容器里面,然后设置除了 /api 路径不缓存其他全部缓存,更新前端的时候用 API 调用 CDN 提供商的接口清除 CDN 缓存
sekfung
2021-08-31 01:37:31 +08:00
@anyxchachapoly #1 是没太大联系,主要是不知道 代理和前端项目 在不同 pod 之间,如何去访问
snachx
2021-08-31 01:40:08 +08:00
如果是单页应用或者真实 html 比较少情况,一般设置 html 文件不缓存,这样重新 build 之后浏览器能及时获得最新的资源

既然不缓存,你放固定数据中心就看用户到数据中心的网络状况,放 cdn 就看 cdn 回源 oss 的网络状况,一般用同一家 cdn 和 oss 的话,还是 cdn 总体来说更优吧
yompc
2021-08-31 01:40:14 +08:00
@yompc 这里面的缓存指的都是 CDN 缓存
snachx
2021-08-31 01:45:15 +08:00
@sekfung 没太明白你说的代理和前端项目在不同 pod 之间如何访问的意思,抛开 cdn 不谈,你前端项目难道不是 webpack 编译过之后扔一个 nginx pod 里面吗?为什么还要 node server 呢
sekfung
2021-08-31 01:51:06 +08:00
@snachx nginx pod 是独立的,换句话说我并不会为每个每个前端项目都启动一个 nginx pod,或者是扔到 nginx pod 挂载的 volume
snachx
2021-08-31 01:59:20 +08:00
@sekfung 一个前端一个 nginx pod 是挺常见的做法吧,反正对外都是 ingress 来转,一个 nginx 也就占一点点资源,代码推送自动编译构建成镜像触发重新部署就更新了
raptium
2021-08-31 07:10:44 +08:00
html 也传到 oss,设置 header 不让缓存,这就可以了吧。
kinboy
2021-08-31 07:53:07 +08:00
前端有什么使用 K8S 的必要性 2 吗?还是为了使用而使用?
Ariver
2021-08-31 08:03:46 +08:00
我们先不谈 k8s,就说部署的时候,前端项目是应该部署到一个 node 环境中去,还是一个 nginx 中。
steptodream
2021-08-31 08:08:59 +08:00
热炒一个概念 然后其他人干啥都使劲往上靠 就像热门词内卷一样
chendy
2021-08-31 08:25:54 +08:00
全部 oss+cdn,对 html 配置不缓存
eudore
2021-08-31 08:39:46 +08:00
ci 将前端项目源码编程成 dist,将 dist 放到 nginx 基础镜像编译项目镜像,镜像发布就完事了。在 html 里面直接写 cdn 的地址,cdn 回源配置 oss,静态资源使用 ossbrowser 直接上传进去。

关于 nodeserver 方式,非必要不推荐,nodeserver 和 dist 的镜像体积、资源消耗、启动速度都是天壤之别,dist+nginx 方式快速启动 超低资源消耗。
yangyaofei
2021-08-31 08:45:29 +08:00
@eudore 直接放 volume 里面和后端放一起,nginx 都省了
cheng6563
2021-08-31 09:22:22 +08:00
我司是直接把 HTML 丢到个 alpine 镜像里存着。
部署 pod 时用一个 initContainers 把文件复制到 nginx 的页面目录去

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

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

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

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

© 2021 V2EX