CREATE TABLE `dvouchers` (
`2147483647` int(3) NOT NULL auto_increment,
`code` varchar(12) NOT NULL default '1',
`type` char(1) NOT NULL default '$',
`count` int(3) unsigned NOT NULL default '0',
`amount` int(3) unsigned default '0',
`notes` text,
`expiryDate` date default NULL,
`fkUserAdminId` int(11) NOT NULL default '0',
PRIMARY KEY (`2147483647`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Частичный ответ, потому что он слишком велик для комментария, а также потому, что у меня нет желания настраивать и запускать новые эксперименты прямо сейчас. (Если кто-то отправляет ответ с обновленными, проверяемыми номерами, он получает мое одобрение.)
Вот примерный набросок того, что происходит, когда у вас есть Tampermonkey, Violentmonkey и т. Д. И установлены пользовательские скрипты:
Каждая страница, которую вы посещаете , проверяется на соответствие директивам @include
, @match
и @exclude
каждого активного пользовательского скрипта . Более умные движки сначала проверят @exclude
и остановятся, если совпадение найдено.
Некоторые движки лучше справляются с этой проверкой, чем другие, и в идеале информация о совпадении сайтов должна храниться в памяти для максимальной скорости.
Каждый <frame>
или iframe на всех посещаемых вами страницах сверяются с директивами @include
, @match
и @exclude
каждого активного пользовательского скрипта, если только этот скрипт не имеет @noframes
установлено.
Если скрипт соответствует странице (или фрейму), то Tampermonkey (и т. Д.) Должен:
(A) Извлечь код скрипта и любые данные - часто с диска (медленно).
(B) Затем создайте некоторый уровень песочницы - в зависимости от движка, браузера и режима @grant
.
(C) Вставьте скрипт в вышеупомянутую песочницу - почти всегда обернутую анонимной функцией - и запустите его.
Затем пользовательский скрипт будет использовать ресурсы в зависимости от своего кода.
В общем:
@match
работает лучше (проверено годами ранее), чем @include
. Если вы собираетесь использовать 1000 строк, используйте @match
вместо include.
Используйте @noframes
, если у вас нет причин не делать этого.
@include
может быть обработана за то же время, что и для введите один пользовательский скрипт. (Кто-нибудь хочет попробовать собрать какие-нибудь числа?) @require
файлы, @resource
файлы, GM_setValue
данные) должны быть извлечены с диска, то это сравнительно огромная задержка во времени. (Но все же это быстрее, чем извлекать информацию из Интернета.) Наконец, время и возможное напряжение из-за необходимости поддерживать большой список сайтов, редактируя файл usercript каждый время должно быть по сравнению с тем, насколько инвазивен ваш сценарий .
Если бы это был я, а скрипт только задерживал страницы менее чем на 300 миллисекунд, я бы просто держал свой нос и использовал:
// @match *://*/*
// @noframes
Однако, если скрипт более инвазивен, он медленнее или более ресурсоемкий, вы можете использовать гибридный подход ...
Сохраните список сайтов, на которых будет полностью работать, в данных GM_setValue
и / или в файле @resource
d.
Таким образом, вы можете редактировать список на лету, используя, например, команды меню; или через редактор данных скрипта Tampermonkey; или даже с помощью кнопок, которые вы создаете для этой цели. Однако все это выходит за рамки этого вопроса.