
图片占用的带宽往往比页面本身还要大,当与主站共用一个域名时,静态请求就会挤占应用连接,缓存也很难单独优化。第一步就是启用独立的二级域名来专门存放静态资源。
域名分离还有连带细节。新域名要设置解析、接入加速服务,缓存规则按路径分级,长周期给带版本号的资源;浏览器对于同一个域名的并发连接是有限的,静态域名分离之后主站接口和页面请求就不再排队了。跨域引用图片的时候要注意防盗链配置,来源白名单要把主站各个入口域名都加进去,协议以及子域的区别也不能遗漏。
上传链路同步改造。文件由对象存储来承载,业务库只保存相对路径,切换存量数据用批量替换完成,新旧域名并行一段时间,观察日志确认引用全部迁移。回源带宽单独监控,缓存命中率下降一般就是键值规则或者路径大小写有问题。
最后要解决的一个问题是:主站模板中如果仍然使用旧的域名作为绝对地址的话,那么分离之后就会失效,所以要全局搜索核对一遍之后再结束工作。
分离出来的收益在故障情况下看得最清楚。主站接口异常的情况下图片仍然可以正常加载,页面不会全部变白;反过来图片流量激增也不会影响下单接口的速度,两种负载之间没有相互传导。上线之后按照域名来分别统计带宽和命中率,容量规划才有独立的依据。