有没有一种方法可以使用浏览器'使用Javascript的本机gzip解压缩
Is there a way to use browser's native gzip decompression using Javascript?
后端服务器使用gzip文件进行响应,但没有CCD_ 1。我无法控制服务器,因此无法处理服务器端的问题。
我现在需要的是使用javascript解压缩gzipped文件客户端。
我发现了这个优秀的图书馆,它可以帮助我做到这一点:http://nodeca.github.io/pako/
但我不想添加额外的库只是为了解压缩文件。我觉得应该有一种方法可以使用浏览器的本机功能来卸载gzip。我说得对吗?如果我错了,有人能解释为什么这个浏览器功能没有作为javascript API公开吗?有没有一种方法可以在不添加额外库的情况下用javascript解压缩文件?
压缩流API是一种新的web标准,目前可在Chromium、Firefox、Safari和Deno中使用。
压缩流API的一些示例用法:
async function decompressBlob(blob) {
let ds = new DecompressionStream("gzip");
let decompressedStream = blob.stream().pipeThrough(ds);
return await new Response(decompressedStream).blob();
}
压缩:
const compressedReadableStream = inputReadableStream.pipeThrough(new CompressionStream('gzip'));
您还可以使用WASM实现。显然,WASM实现的性能可以接近本机实现的90%(大约是JS实现的20倍)。
另请参阅:
- 压缩流API的WICG标准文档
答案是错误的,应该删除,但由于平台限制,不能删除。忽略这一点,选择另一个答案
我觉得应该有一种方法可以使用浏览器的本机功能来卸载gzip。如果我错了,有人能解释为什么这个浏览器功能没有作为javascript API公开吗
不,不应该有,除非它在w3c标准中,而事实并非如此。唯一说明gzip压缩的标准是HTTP标准。
我真的相信它不会成为标准,因为你可能想要使用成千上万的算法(用于压缩、加密等),而浏览器无法处理所有算法;为一个算法创建接口而不为另一个创建接口也是不公平的。
HTTP协议是一种例外。这里的压缩是为了让数百万人的生活更轻松。HTTP是web性能的瓶颈,所以只要压缩可用,我就无法想象在其他地方需要使用JavaScript压缩的情况。我所知道的唯一情况是压缩localStorage
/indexedDB
中的项目,但即使在那里gzip也不会工作,因为它不会产生UTF-16
输出。
这就是为什么它不在标准中,也就是为什么它很可能不会出现在标准中。
您的特殊情况是服务器端实现错误。在没有适当标头的情况下使用压缩输出真的很臭。要么不要使用压缩,要么做对。
有没有一种方法可以在不添加额外库的情况下用javascript卸载文件的gzip
事实上,除此之外,还有一个可能的解决方案:创建一个浏览器扩展,在服务器响应中注入一个合适的头,您不需要库,但需要将扩展分发给用户。可能会更糟,但仍然可能奏效。
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何使用javascript或html下载PDF格式的填写表单
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何使用javascript从主svg对象动态创建svg视图框
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 使用Javascript获取所选选项ID
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 使用javascript从数据库中添加表
- JSON.parse没有'不能使用Javascript
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 可以't使用JavaScript获取width属性
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 使用javascript在Flash中加载外部图像
- 使用Javascript创建测验页面
- 在PHP中使用javascript更改页面标题'if'
- 使用javascript函数在页面初始化后加载jquery
- 无法使用javascript检索SPList项
- 使用javascript存储变量的最安全方式
- 使用javascript搜索具有用户输入的数组