有没有什么办法能让未登录用户走 CDN,登陆用户直接回源不过 CDN?

2017-06-19 11:50:18 +08:00
 baskice
RT

目前网站是全部流量走单点 loadbalancer,然后后面再区分读缓存还是处理。希望能把给未登录用户的缓存尽可能前推到边缘 CDN 上

我很好奇有些网站登陆不登陆连 IP 都不一样……怎么实现的?
3361 次点击
所在节点    CDN
11 条回复
wvidc
2017-06-19 12:03:03 +08:00
同求方法 用子域名改动太大~
baskice
2017-06-19 12:10:22 +08:00
@wvidc 我这边即便登陆和不登陆用户分开子域名都没法很好处理。用户登陆后跳转不同域名,以及登陆用户分享了 [登陆后域名] 被未登录用户访问跳转未登录域名都挺麻烦的……
huangtao728
2017-06-19 12:13:32 +08:00
你可以看看 Alt-Svc
不过也有缺点,只有某些浏览器支持
Zohar
2017-06-19 12:17:46 +08:00
这个要看 CDN 是否支持根据 cookie 进行回源。
我只知道 Cloudflare 企业版和 CloudFront 能根据 Cookie 判断用户有没有登录,可以针对未登录用户进行缓存。
0ZXYDDu796nVCFxq
2017-06-19 12:28:09 +08:00
1. 登录用户跳到 my.expamle.com
2. 登录用户跳到 /my,这个路径附加头部 cache-control: private, no-cache
3. 登录用户附加一个 ajax 请求,返回隐私数据
millken
2017-06-19 15:30:09 +08:00
nginx lua 可以做到,根据 cookie 决定后端的 upstream。
mornlight
2017-06-19 16:19:47 +08:00
@millken #6 别人家的 CDN 没法改配置吧,除非暴露出接口来。
sumhat
2017-06-19 16:27:43 +08:00
除非网站用了特殊的 js 在加载的时候自行判断 cookie 之类的,然后进行不同类型的加载。第三方 CDN 是不会帮你做这个事情的。
Livid
2017-06-19 17:03:53 +08:00
CDN 上通常实现这个的方式是把 cookie 的值作为 cache key 的一部分,已登录和未登录会造成某个 cookie 的 value 不一样,以此来实现对 cache key 的控制。
weisdong
2017-06-20 11:05:54 +08:00
同一个域名只能根据缓存或者不缓存,同一个域名只要做 cname 了 肯定会经过 CDN 的。 @baskice
baskice
2017-06-20 12:17:58 +08:00
@huangtao728 HTTP Alternative Services 现在只有 firefox 支持啊…… firefox 市场占有率在大陆都快绝迹了

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

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

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

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

© 2021 V2EX