加速到极致——使用对象存储托管Gzip压缩的js文件
【摘要】 现代的网站大量依赖Javascript代码, 以至于一些网站Javascript过于臃肿,导致网站加载非常缓慢。后来就有了将JS代码精简到最简的".min.js", 而这还不够,因为浏览器支持Gzip的解压,所以又有人利用HTTP协议的解压Gzip功能,实现了网络传输的进一步缩减。例如JQuery3.3.1, 原始的大小为265.38KB, 经过.min.js最简化后,大小为84.89KB...
现代的网站大量依赖Javascript代码, 以至于一些网站Javascript过于臃肿,导致网站加载非常缓慢。
后来就有了将JS代码精简到最简的".min.js", 而这还不够,因为浏览器支持Gzip的解压,所以又有人利用HTTP协议的解压Gzip功能,实现了网络传输的进一步缩减。
例如JQuery3.3.1, 原始的大小为265.38KB, 经过.min.js最简化后,大小为84.89KB,缩小68%
更进一步地, 通过Gzip,可以缩小到38KB的水平,较.min.js又缩小55% !
这还没有结束,据各路英雄通过各种方式压缩, 将JQuery 3.3.1 的gzip文件压缩到了28.5KB的水平
详见图:
这基本是极限了 相对于原始的265.38KB压缩了89.2% , 相对于.min.js文件压缩66%
这对网站速度提升可谓非常巨大, 上面这个例子只是JQuery, 实际上所有js文件都可以通过这种技术实现网页加速
那么,怎么通过托管到OBS来实现网页加速呢?
我们可以看到, 通过OBS Util上传后的文件有着这样的元数据:
打开链接则直接弹出下载框,这显然不是我们需要的
而通过Console上传,元数据是这样的:
试图打开链接,同样弹出下载框。
这里直接先给出答案,需要min.js.gz这种压缩格式能直接访问,需要添加以下Metadata:
如果已经上传了大量的JS文件,不方便手动修改, 需要使用SDK或者API批量操作,这里给出一个Python修改脚本:
#!/usr/bin/python # -*- coding:utf-8 -*- AK = 'XXXXXXXXXXXXXXXXXX' SK = 'XXXXXXXXXXXXXXXXXX' server = 'https://obs.myhuaweicloud.com' #换成你的 bucketName = '桶名' from obs import * # Constructs a obs client instance with your account for accessing OBS obsClient = ObsClient(access_key_id=AK, secret_access_key=SK, server=server) # List all objects in folder resp = obsClient.listObjects(bucketName, 'path/to/js/xxxx/') for content in resp.body.contents: if content.key.endswith('.gz'): headers=CopyObjectHeader() headers.directive='REPLACE' headers.contentType='text/html' headers.contentEncoding='gzip' res=obsClient.copyObject(bucketName,content.key,bucketName,content.key,headers=headers) print res
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)