上周,让NO同学帮忙检测了一下mail登录的数据


最后发现,结果很不理想,平均登录时间在50s左右


看了相关的数据后,发现以前的CDN也有一定的问题


首先,以前的CDN缓存时间太小,只有12个小时,几乎没啥用


再次,CDN似乎不太稳定,有时用户访问CDN的时间很长


经过和NO的同学讨论后,准备更改CDN


从js.sohu.com迁移到js.mail.sohu.com上


新的url是我们自己的服务器,上面存储一些静态的资源


NO同学负责更改该url的DNS解析,在全国范围内就近解析到最近的CDN上


他们的CDN实现似乎也很简单,Nginx+ProxyPass+Cache就搞定了


 


在测试过程中,有一个问题,郁闷2天了


静态的js文件,首次访问,CDN正常返回200


但按F5刷新后,CDN不是返回的304,而是继续返回200


但设置js.mail.sohu.com的host到我们的服务器,就能返回304


和NO同学调试了一天,才发现是Set-Cookie的header惹的祸


我们的js.mail.sohu.com上装了passport的module


当用户登录后访问,会设置相应的cookie,所以每个请求都会有这个header


但Nginx的Cache模块貌似是,发现有这个Set-Cookie的heaer后,就不cache了


所以,当用户按F5后,它不会返回304,而是向后台去请求返回200


 


最后,是这么解决的:


在nginx上配置清除那个header:



折叠复制代码




  1. more_clear_headers 'Set-Cookie';




当然,你的nginx需要编译进去headers-more-nginx-module这个模块