Я бы предложил немного изменить алгоритм кэширования сайтов.
При первом посещении сайта выводить краткое сообщение в браузере:
Кэшировать данный домен example.site? И кнопку Да или Нет.
А дальше уже по вашему алгоритму, без счетчиков.
В базовом сценарии использования расширения, а именно, когда открывается
много новых сайтов при просмотре результатов поиска, такое сообщение будет раздражать.
Бывают сайты которые полезно кэшировать, например некоторые форумы, ютуб,
а сайты типа rbc.ru не имеют смысла кэшировать, хотя могут посешать многократно.
Для решения таких задач лучше подходят белые списки и правила в разделе Запись в кэш. Но одно другому не мешает. Я так и пользуюсь и тем и тем.
Позволю себе не согласиться.…
Ваше несогласие строится на том, что Вам нужно кэшировать HTML каждой посещаемой странички. А это совсем другая задача и другая стратегия кэширования.
Данное расширение помогает только в стратегии кэширования статики (картинки, стили, скрипты, Flash). Стратегия используется для ускорения загрузки страниц сайтов при последующих посещения за счет уменьшения количества запросов к серверу и времени загрузки больших элементов страницы.
Странная у Вас какая-то логика.
Вы полагаете, что основной вклад в быстрый износ харда/SSD
вносят редко посещаемые, а значит и редко записываемые на хард/SSD сайты?
Имеется ввиду большое множество таких сайтов, которые один раз открываются, анализируются и закрываются. Некоторые из таких сайтов могут иметь тонны картинок и прочей статики.
Жестко прописывать g_name и g_extensionRoot внутри самого расширения я считаю неправильным
Согласен. Исправил.
1. Использование обрабочика RequestHeaderReceived для решения вопроса, писать в кэш или нет - не лучший вариант. Если заменить его на BeforeRequestHeaderSend, то все запросы, которые блокируются или берутся из кэша, свободно выполнятся без вмешательства расширения.
Классно. Раньше этого события не было. Улучшил.
2. Чтобы выведенная предыдущими расширениями в строку "Правила" монитора информация не затиралась, делается так:
hc.monitor_string = hc.monitor_string .. MyStr
Исправил
3. Использование table.foreach не приветствуется в нынешней версии LUA и вообще не будет поддерживаться в последующих. Вместо этого можно, к примеру, делать так:
for param,value in pairs(hc.get_global(g_name)) do
f:write(param:sub(5)..' = '..value..'\r\n')
end
Избавился от всех table.foreach
4. В обработчике Destroy надо очищать все глобальные переменные, иначе они останутся висеть в памяти. К примеру, так:
hc.set_global(g_name)
Добавил.
6. В монитор хорошо бы выводить только необходимый минимум информации, не забивая все остальное.
Немножко сократил текст сообщения о Referrer. Думаю те, кому эти сообщения мешают, смогут поправить их под свои нужды, или убрать вообще.
Спасибо вам за дельные советы и за исправление моих ошибок.v2.0.1- расширения теперь находит свои файлы, если поместить его в отдельную папку
- улучшена обработка запросов, теперь расширение не вызывается, если запрос берется из кэша, или был блокирован
- строки, которые расширение выводит в колонке "Правила", теперь не должны затирать сообщение от других расширений
- сокращено сообщение о проверке Referrer в мониторе
- добавлено удаление глобальных переменных при закрытии расширения