我一直在试图弄清为什么我正在使用的用户脚本在Firefox中运行缓慢,而在Chrome和Safari中却表现不佳。我确定的一个原因(虽然可能不是唯一的原因)是用户脚本的大文件影响很大。该脚本中有十本书的长度的字符串,文件大小为3.8 MB。如果我删除了字符串,脚本将再次变得很快-基本上,在文件加载时浏览器中的所有内容都会停止运行(对于典型的用户输入交互,此刻是正确的)。

因此,我认为这可能有助于预压缩字符串,然后在运行期间根据需要解压缩。任何人都有在用户脚本中执行此操作的策略吗?

最佳答案

以下是一些未经测试的想法:


从Greasemonkey切换到Scriptish。圣经通常表现更好。
a)将文本拆分为单独的文本文件。
b)将这些文件放在安装脚本的位置。无需压缩。
c)用@resource directives指向每个文件;每个文件一个。
d)在您的代码中,使用GM_getResourceText()可以在需要时仅获取所需的文本。
将文本拆分成文件,将它们托管在您自己的启用了gzip的服务器(可以是本地计算机)上,并使用GM_xmlhttpRequest按需获取文件。
服务器可以自动对文件进行gzip压缩,也可以预压缩它们以节省几毫秒的时间。






至于在用户脚本中存储压缩字符串;很难看出这对性能有何帮助。

压缩文本可能会使字节数减少70%,但用户脚本中不能包含二进制文件。您将不得不对它进行base64编码,并且您的脚本突然不再短很多了。

然后,您必须同时对其进行base64解码,并且每次使用unzip data using js。这两个操作都会占用JS的时间和内存。
维护脚本和/或更改文本将更加繁琐。

似乎需要大量工作才能获得负面收益。

07-24 09:43
查看更多