baskice
V2EX  ›  CDN

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

By baskice at 2017 年 6 月 19 日 · 4505 次点击
RT

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

我很好奇有些网站登陆不登陆连 IP 都不一样……怎么实现的?
11 条回复  •  2017-06-20 12:17:58 +08:00
wvidc
   1
wvidc  
   2017 年 6 月 19 日
同求方法 用子域名改动太大~
baskice
   2
baskice  
OP
   2017 年 6 月 19 日
@wvidc 我这边即便登陆和不登陆用户分开子域名都没法很好处理。用户登陆后跳转不同域名,以及登陆用户分享了 [登陆后域名] 被未登录用户访问跳转未登录域名都挺麻烦的……
huangtao728
   3
huangtao728  
   2017 年 6 月 19 日 via Android
你可以看看 Alt-Svc
不过也有缺点,只有某些浏览器支持
Zohar
   4
Zohar  
   2017 年 6 月 19 日 via Android   ❤️ 1
这个要看 CDN 是否支持根据 cookie 进行回源。
我只知道 Cloudflare 企业版和 CloudFront 能根据 Cookie 判断用户有没有登录,可以针对未登录用户进行缓存。
0ZXYDDu796nVCFxq
   5
0ZXYDDu796nVCFxq  
   2017 年 6 月 19 日 via iPhone
1. 登录用户跳到 my.expamle.com
2. 登录用户跳到 /my,这个路径附加头部 cache-control: private, no-cache
3. 登录用户附加一个 ajax 请求,返回隐私数据
millken
   6
millken  
   2017 年 6 月 19 日
nginx lua 可以做到,根据 cookie 决定后端的 upstream。
mornlight
   7
mornlight  
   2017 年 6 月 19 日   ❤️ 1
@millken #6 别人家的 CDN 没法改配置吧,除非暴露出接口来。
sumhat
   8
sumhat  
   2017 年 6 月 19 日
除非网站用了特殊的 js 在加载的时候自行判断 cookie 之类的,然后进行不同类型的加载。第三方 CDN 是不会帮你做这个事情的。
Livid
   9
Livid  
MOD
PRO
   2017 年 6 月 19 日   ❤️ 1
CDN 上通常实现这个的方式是把 cookie 的值作为 cache key 的一部分,已登录和未登录会造成某个 cookie 的 value 不一样,以此来实现对 cache key 的控制。
weisdong
   10
weisdong  
   2017 年 6 月 20 日
同一个域名只能根据缓存或者不缓存,同一个域名只要做 cname 了 肯定会经过 CDN 的。 @baskice
baskice
   11
baskice  
OP
   2017 年 6 月 20 日
@huangtao728 HTTP Alternative Services 现在只有 firefox 支持啊…… firefox 市场占有率在大陆都快绝迹了
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
› NGINX
› cURL
© 2026 V2EX · 36ms · 3.9.8.5