Написах скрипт Greasemonkey, който се изпълнява на всички сайтове и проверява някои неща.
Тъй като се изпълнява на всяка страница, ефективността е важна. Затова се чудя дали една добавка за Firefox може да бъде по-бърза.
Това са въпросите ми:
- Трябва ли Greasemonkey да презарежда скрипта при всяко (повторно) зареждане на страница?
- Може ли добавка да увеличи производителността?
- Какви са предимствата, недостатъците?
АКТУАЛИЗАЦИЯ:
Малко основна информация - правя оценка на латентността при зареждане на страницата на моя скрипт.
АКТУАЛИЗАЦИЯ 2 (повече информация):
Главата на моя скрипт изглежда така:
// ==UserScript==
// @name My Script
// @namespace abc
// @description What it does
// @include *
// @resource moz_list http://mxr.mozilla.org/mozilla/source/netwerk/dns/src/effective_tld_names.dat?raw=1
// @resource resource_B http://mysite.org/res
// @version 1.0
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_getResourceText
// ==/UserScript==
Освен това използвам следните технологии:
- Типове данни речник и масив
- RegExp за съвпадащи връзки
- tldextract код от тук: https://github.com/masylum/tldextract
- JSON за съхраняване и извличане на речника в кеша (може ли stringify и eval да бъдат по-бързи?)
- document.getElementsByTagName()
- window.location.hostname
В псевдокод основната ми функционалност е следната:
var host = window.location.hostname;
host = host.replace('www.', '');
if (host in my_dictionary) {
var links = document.getElementsByTagName('a');
for (i = 0; i < links.length; i++) {
if (host != links[i].hostname) {
if (links[i].href in my_dictionary[host]) {
do_some_stuff();
}
}
}
} else {
send_to_my_server(host);
}