[英]How to compress/decompress strings in a userscript?
我一直在试图弄清楚为什么我正在使用的用户脚本在Firefox中运行缓慢但在Chrome和Safari中炙手可热。 我发现的一个原因(尽管可能不是唯一的原因)是用户脚本的大文件大小产生了很大的影响。 该脚本中有十个书长字符串,文件大小为3.8 MB。 如果我删除字符串,脚本会再次变快 - 基本上浏览器中的所有内容都会在文件加载时停止(当时正好用于典型的用户输入交互)。
所以我认为它可能有助于预压缩字符串,然后在运行期间根据需要解压缩。 任何人都有策略在用户脚本中执行此操作?
以下是一些未经测试的想法:
从Greasemonkey切换到Scriptish。 Scriptish通常表现更好。
a)将文本拆分为单独的文本文件。
b)将这些文件放在安装脚本的位置。 无需压缩。
c)使用@resource
指令指向每个文件; 每个文件一个。
d)在你的代码中,使用GM_getResourceText()
Doc来获取你想要的文本。
将文本拆分为文件,将它们托管在您自己的支持gzip的服务器(可能是您的本地计算机)上,并使用GM_xmlhttpRequest
获取文件。
服务器可以自动gzip文件,或者你可以预压缩它们以节省几毫秒。
至于在用户脚本中存储压缩字符串; 很难看出这对性能有何帮助。
压缩文本可能会减少70%的字节数,但是不能在用户脚本中使用二进制文件。 你必须对它进行base64编码,你的脚本突然不再短了。
然后你必须同时对它进行base64解码,并为每次使用使用js解压缩数据 。 这两个操作都会在JS中扼杀时间和内存。
维护脚本和/或更改文本将会非常繁琐。
似乎很多工作可能带来负面收益。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.