移动和PC当前的插件接入90%都采用的是Web的方式接入,同时很多端上的能力都通过JSSDK暴露给插件使用,一个优美的Web应用静态资源(CSS/JS)功不可没,当前大部分插件的静态资源是托管在自己服务器,或者淘宝的CDN,通过标准的HTTP协议的max-age或者last-modified 控制端的容器做缓存, 但是当淘宝有运营活动时,插件访问量变大,大量的静态资源请求缓慢导致插件的响应变慢,而且缓存不可控,消耗大量ISV的CDN流量;另一方面,PC千牛插件在cdn不可用时,也会导致插件的不可用。同时通过CDN发布的静态资源有多层缓存,大量ISV对缓存理解不够深刻,同时也不够透明导致很多ISV对缓存的失效把握不准。
在这样的背景下,千牛提供了一套自身的离线缓存策略,通过离线缓存策略,我们能够:
1、减少对静态资源的网络请求,降低ISV服务器或者CDN成本
2、减少对cdn等系统的依赖
3、增强在cdn等网络异常情况下,插件的可用性(一次使用后静态资源使用本地缓存),也是作为双十一插件稳定性保障的一个方面
4、透明化容器缓存,让缓存变的更可控。
在千牛里,通常我们引用一个静态资源采用的形式是:
<link rel="stylesheet" type="text/css" href="http://g.tbcdn.cn/sj/qn-operation/0.0.7/common/common.min.css">
现在只需要在静态资源地址后加上"qntag=123"这样的参数,这个静态资源就会以版本123缓存起来。
如:
<link rel="stylesheet" type="text/css" href="http://g.tbcdn.cn/sj/qn-operation/0.0.7/common/common.min.css?qntag=123">
1、需要使用本地缓存的静态资源只要在web页面加上类似 这样的url参数,即可自动实现本地缓存,注意qntag值必须为全数字
2、建议仅针对js,css和图片资源进行本地缓存;html页面如果仅仅为静态页面的也可以使用本地缓存
3、千牛版本在2.07.04N以上才生效,对低版本无影响
4、官方资源(如jssdk.js,less.js),也请需要加上“qntag=1”,而且以后都不用改版本数字
5、为调试方便,本地禁用qntag,可以将安装目录下configrations/local_cache.json文件重命名即可