简码编程最近在研究使用hpsocket做http和ws服务端,
发现有些需要传输的文本数据比较大,
需要进行压缩传输.
比如说,网页客户端请求一个JS文件或是一个json格式的数据文本文件,
这个文件有10M大小,
如果直接原文传输,
会非常耗费宽带和服务器资源,
这个时候,
就可以设置让网页客户端在请求头上加上gzip标识,
服务器识别到请求头里的gzip标识之后,
把相应的文件使用zlib库进行压缩后再发送,
这样能极大地节约内存减少带宽点用增加传输效率,
经过实际测试,
10M的json格式数据文本能压缩到1M,
估计是大量的空格和换行被压缩了.
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio教程 www.jianma123.com 简码编程";right=397;bottom=254)
winform.add(
button={cls="button";text="加载压缩另存";left=64;top=186;right=181;bottom=232;z=1};
button2={cls="button";text="加载解压另存";left=201;top=187;right=335;bottom=232;z=2};
edit={cls="edit";left=16;top=12;right=383;bottom=167;edge=1;hscroll=1;multiline=1;vscroll=1;z=3}
)
/*}}*/
import zlib;
winform.button.oncommand = function(id,event){
var zstr = zlib.compress(string.load("C:\Users\Administrator\Desktop\new 3.txt"));
string.save("C:\Users\Administrator\Desktop\new 3-zlib.txt",zstr);
winform.edit.print("加载压缩另存完成");
}
winform.button2.oncommand = function(id,event){
var zstr = string.load("C:\Users\Administrator\Desktop\new 3-zlib.txt");
var unstr = zlib.uncompress(zstr);
string.save("C:\Users\Administrator\Desktop\new 3-unzlib.txt",unstr);
winform.edit.print("加载解压另存完成");
}
winform.show();
win.loopMessage();