Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Дополнения, плагины
»
IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц: [
1
]
2
3
Все
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD (Прочитано 50215 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Inversion
Новичок
Репутация: +6/-0
Offline
Сообщений: 17
IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
:
07 мая 2011, 18:40:02 »
IgnoreOnceVisitedSites — расширение HC которое помогает не кэшировать сайты, на которые Вы, скорее всего, больше не зайдёте, или же заходите, но уж очень редко. Таким образом уменьшается количество мертвого груза и экономится ресурс дисковой подсистемы.
О проблеме кэширования файлов всех подряд сайтов, которые я посещаю, я задумывался и ранее, проводя регулярные чистки в кэше HC, но когда у меня появился SSD диск в качестве основного, вопрос встал значительно серьезнее. Как Вы знаете, эти диски имеют ограниченный ресурс циклов перезаписи ячеек памяти, и для меня стало очень важно настроить HC так, чтобы он старался кэшировать только то, что более вероятно будет запрашиваться в будущем.
Исходя из этой логики, я решил, что разумно будет кэшировать регулярно посещаемые сайты и стараться избегать кэширования множества сайтов, который я открываю всего раз в жизни, например при просматривании сайтов из результатов поиска.
В результате я попробовал написать это расширение, которое делает следующее:
1) Считает количество визитов на сайт;
2) Если по истории сайт посещается регулярно — для него включается кэширование. Первых пару визитов абсолютно ничего не кэшируется для нового сайта.
Технические особенности:
- Если на странице регулярно посещаемого сайта используются файлы из другого домена (например картинки хостятся на специальном сервисе), то такие материалы также будут закэшированы. Это работает через проверку Referrer в запросах.
- Игнорируются запроси на получение favicon-иконки сайтов. Множество таких запросов делается со страниц результатов поиска Google/Яндекс. Такое игнорирование сделано, чтобы не считать такой запрос за визит на сайт и, соответственно, не кэшировать большое множество таких иконок.
- На вкладке Монитор, в колонке Правила, появятся поясняющие записи:
New domain: domain.com
Checking referer (domain.com) - Visited 1/3
Referrer handycache.ru - Visited often, З.3
Skipping favicon request
Настройки
(v1.0.0 — значения можно подправить в исходнике, в специальном блоке Config; v2.0.x — через кнопку «Настройки расширения»):
- Сайт засчитывается в "регулярно посещаемые" после 3 визитов и тогда он начинает кэшироваться.
- Визитом считается запрос к домену, если со времени засчитанного предыдущего визита прошло 3 дня и более. Часто можно 2-3 дня просматривать сайт (в таком промежутке времени прекрасно справляется кэш браузера), и после этого на него не возвращаться, и чтобы не насчитать за это время 3 визита и не зачислить сайт в регулярно посещаемые, сделана проверка на минимальный интервал между визитами.
- Если со времени последнего визита на сайт прошло 2 месяца, и сайт ещё не набрал требуемого количества посещений (3 в моём случае), то такой сайт удаляется из базы, как посещаемый не регулярно. То есть, чтобы сайт начал кэшироваться, эго нужно посетить минимум 3 раза с интервалом не более 2 месяцев. А кратчайшей же строк зачисления в "регулярные" — 3 визита с интервалом не менее 3 дня (или же найти соответствующий домен в базе и подправить количество посещений ;) — точнее, найти файл с именем домена и сделать его размер равным 2 байта, исходя из организации базы)
Результаты
По результатам почти полугода использования этого расширения могу сказать, что эффективность использование кэша по статистике совсем не ухудшилась, а вот размер кэша на диске уже не разбухает так сильно, как ранее, и чистить теперь уже не так сильно необходимо. Еще исчезло неприятное ощущение, при открытии множества новых сайтов из результатов поиска, с мыслями: "и всё это сейчас пишется на диск :(". Ну и за свой SSD я теперь более спокоен, что не расходую его ресурс слишком сильно :)
Установка
v1.0.0
Файл IgnoreOnceVisitedSites.lua должен находиться в папке Extensions, для работы ему нужна папка с именем "IgnoreOnceVisitedSites DB". То есть нужно распаковать содержимое архива в папку Extensions и установить расширение через HC. Расширение должно находится прямо в папке Extensions, не в подпапке.
Файл lfs.dll (нужен для файловых операций) должен находится в папке HC (на одном уровне с HandyCache.exe и lua5.1.dll)
v2.0.1
Распаковать архив в папку Extensions и установить расширение.
История исправлений, которые были внесены благодаря участникам форума.
v2.0.0
(переписано было практически всё)
- Статистика больше не базируется на файлах (больше нет проверки существования, размера, даты модификации, писания в файл при обработке запроса)
- Статистика хранится в IgnoreOnceVisitedSitesDB.txt, конфиг в IgnoreOnceVisitedSites.ini
- Сделан UI для настроек и просмотра статистики с сортировкой по домену. Изменить настройки теперь можно через кнопку «Настройки расширения» (находится справа от списка установленных расширений). В значениях можно указывать не только целые числа, но и вида: 0.5, 2.5
- Работает автоматическое сохранение статистики каждый час, а также при завершении работы
- lfs.dll больше не используется
v2.0.1
- расширения теперь находит свои файлы, если поместить его в отдельную папку
- улучшена обработка запросов, теперь расширение не вызывается, если запрос берется из кэша, или был блокирован
- строки, которые расширение выводит в колонке "Правила", теперь не должны затирать сообщение от других расширений
- сокращено сообщение о проверке Referrer в мониторе
- добавлено удаление глобальных переменных при закрытии расширения
v2.1.0
- сделана поддержка кириллических доменов вида "яндекс.рф"
- добавлен вывод даты последнего визита в читабельном виде в окне «Настройки расширения»
IgnoreOnceVisitedSites v1.0.0.zip
(10.31 Кб - загружено 157 раз.)
IgnoreOnceVisitedSites v2.1.0.zip
(5.75 Кб - загружено 472 раз.)
«
Последнее редактирование: 30 ноября 2011, 14:02:04 от DenZzz
»
Сообщить модератору
Записан
sunserg10
Beta tester
Репутация: +7/-0
Offline
Сообщений: 322
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #1 :
07 мая 2011, 20:20:29 »
Inversion
Где сохраняется счетчик посещений, если HC выгружается /при выключении ПК/?
Добавлено: 07 Мая 2011, 20:00:16
Разобрался.
Код:
--conf_daysBetweenVisits = 20 -- 20 seconds for testing
Сообщить модератору
Записан
демон
Новичок
Репутация: +0/-0
Offline
Сообщений: 10
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #2 :
07 мая 2011, 23:34:29 »
плохо устроено расширение - нужо все кешировать ипотом выводить список сайтов посещенных мало раз для удаления
Сообщить модератору
Записан
alex77
Старожил
Репутация: +11/-1
Offline
Сообщений: 482
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #3 :
08 мая 2011, 04:54:23 »
касаемо второго файла lfs.dll
тут обнаружилось, что он у меня уже есть его размер - 12800 байт (12,5 Кбайт)
К сожалению, вспомнить почему и из-за чего ставил уже не могу.
его нужно заменить или расширение сможет работать с текущим?
Прикрепил его
lfs.dll
(12.5 Кб - загружено 153 раз.)
Сообщить модератору
Записан
Inversion
Новичок
Репутация: +6/-0
Offline
Сообщений: 17
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #4 :
08 мая 2011, 11:09:42 »
Цитата: демон от 07 мая 2011, 23:34:29
плохо устроено расширение - нужо все кешировать ипотом выводить список сайтов посещенных мало раз для удаления
Мне как раз такой сценарий не подходит. При таком использовании не экономится ресурс SSD.
Цитата: alex77 от 08 мая 2011, 04:54:23
касаемо второго файла lfs.dll
...
его нужно заменить или расширение сможет работать с текущим?
Попробовал Ваш файл — работает и с ним.
Сообщить модератору
Записан
демон
Новичок
Репутация: +0/-0
Offline
Сообщений: 10
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #5 :
08 мая 2011, 11:31:43 »
Цитата: Inversion от 08 мая 2011, 11:09:42
Мне как раз такой сценарий не подходит. При таком использовании не экономится ресурс SSD.
но зато удобно кеш чистить
Сообщить модератору
Записан
alex77
Старожил
Репутация: +11/-1
Offline
Сообщений: 482
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #6 :
08 мая 2011, 12:39:25 »
Цитата: Inversion от 08 мая 2011, 11:09:42
Попробовал Ваш файл — работает и с ним.
тогда остается понять, в чем же различие? и какой все же лучше?)
Сообщить модератору
Записан
Михаил
Модератор
Репутация: +337/-14
Offline
Сообщений: 5513
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #7 :
09 мая 2011, 10:38:12 »
Inversion
Дополнение полезное. Спасибо.
При совершенствовании посмотрите, плиз, в сторону отказа от файловых операций при обработке запросов.
Сообщить модератору
Записан
Inversion
Новичок
Репутация: +6/-0
Offline
Сообщений: 17
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #8 :
09 мая 2011, 10:47:16 »
Цитата: Михаил от 09 мая 2011, 10:38:12
При совершенствовании посмотрите, плиз, в сторону отказа от файловых операций при обработке запросов.
Увы, я не нашел иного способа сохранять информацию между запросами. Если кто знает, подскажите пожалуйста.
Сообщить модератору
Записан
Михаил
Модератор
Репутация: +337/-14
Offline
Сообщений: 5513
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя
«
Ответ #9 :
09 мая 2011, 10:54:51 »
Данные (домен/дата посещения/число посещений) сохраняем в одном файле. При инициализации расширения читаем этот файл в таблицу с идентификацией элементов по имени домена, записываем эту таблицу в память (hc.set_global). В обработчике каждого запроса работаем только с этой таблицей (hc.get_global_table_item/hc.set_global_table_item). При завершении работы расширения (можно и изредка в ходе работы) сохраняем эту таблицу в файл.
Сообщить модератору
Записан
Inversion
Новичок
Репутация: +6/-0
Offline
Сообщений: 17
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #10 :
09 мая 2011, 11:04:43 »
Михаил
Вот спасибо! Я попробую.
Добавлено: 09 Мая 2011, 10:56:57
Цитата: alex77 от 08 мая 2011, 12:39:25
тогда остается понять, в чем же различие? и какой все же лучше?)
Если просматривать информацию о файле плагином Fileinfo в TotalCommander, то всплывают 2 даты в разделе FILE HEADER:
Для моего файла — Time Date Stamp: 4B4FE3A3h -> 15/01/2010 05:40:19
Для Вашего — Time Date Stamp: 4988A9F7h -> 03/02/2009 22:32:55
Это точно не даты создания/модификации файла, так что можно предположить, что эти даты как-то связаны со сборкой файла, и более поздняя дата указывает просто на более позднюю сборку.
«
Последнее редактирование: 09 мая 2011, 11:09:37 от Inversion
»
Сообщить модератору
Записан
alex77
Старожил
Репутация: +11/-1
Offline
Сообщений: 482
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #11 :
09 мая 2011, 11:32:59 »
Inversion
понятно
Сообщить модератору
Записан
Inversion
Новичок
Репутация: +6/-0
Offline
Сообщений: 17
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #12 :
10 мая 2011, 02:32:34 »
Результаты работы по наставлению
Михаила
:
v2.0.0
(переписано было практически всё)
- Статистика больше не базируется на файлах (больше нет проверки существования, размера, даты модификации, писания в файл при обработке запроса)
- Статистика хранится в IgnoreOnceVisitedSitesDB.txt, конфиг в IgnoreOnceVisitedSites.ini
- Сделан UI для настроек и просмотра статистики с сортировкой по домену. Изменить настройки теперь можно через кнопку «Настройки расширения» (находится справа от списка установленных расширений). В значениях можно указывать не только целые числа, но и вида: 0.5, 2.5
- Работает автоматическое сохранение статистики каждый час, а также при завершении работы
- lfs.dll больше не используется
Оказалось, что я руководствовался файлом HCExtensions.html за 05.2009, а там ещё не были доступны set_global-функции. Вот почему всё было устроено так странно изначально.
Помогите, пожалуйста, протестировать новую версию. Если кто может, посмотрите в код, там всего 300 строчек с комментариями.
Также, подскажите пожалуйста, возможно ли здесь изменить первое сообщение темы? Или лучше бы даже удалить эту тему и создать новую с описанием уже новой версии.
Всем спасибо!
Отдельное спасибо Михаилу, за то что указал на недостаток и сразу предложил путь к решению.
IgnoreOnceVisitedSites.zip
(4.73 Кб - загружено 176 раз.)
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #13 :
10 мая 2011, 04:34:51 »
Цитировать
возможно ли здесь изменить первое сообщение темы?
Только модераторам/админам. Недостаток движка форума.
Спасибо за плагин. +
Протестирую завтра на работе (по свободе) и отпишусь.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #14 :
10 мая 2011, 14:00:14 »
Inversion
Я по привычке положил файлы расширения IgnoreOnceVisitedSites в отдельную папку внутри Extensions, чтобы был порядок в общем каталоге, но расширение не смогло найти свои файлы!
Жестко прописывать g_name и g_extensionRoot внутри самого расширения я считаю неправильным. Зачем, если их можно выделить из переменной hc.script_name:
Код:
g_name = re.find(hc.script_name, [[([^\\]+)\.lua$]], 1)
g_extensionRoot = re.replace(hc.script_name, g_name..[[\.lua$]], '')
Добавлено: 10 Мая 2011, 13:50:35
Цитата: Inversion от 10 мая 2011, 02:32:34
Или лучше бы даже удалить эту тему и создать новую с описанием уже новой версии.
Удалять не нужно, пусть остается для истории. Вдруг кому-то больше понравилась старая версия...
Если нужно, я могу поправить первый пост. Напиши как.
Вообще, свежее описание работы расширения и последние изменения можно подробно описывать в отдельном файле и класть его в архив вместе с новой версией расширения, а на форуме приводить только краткие анонсы последних изменений.
«
Последнее редактирование: 10 мая 2011, 15:46:59 от DenZzz
»
Сообщить модератору
Записан
Михаил
Модератор
Репутация: +337/-14
Offline
Сообщений: 5513
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя
«
Ответ #15 :
10 мая 2011, 15:22:48 »
Спасибо за v.2, стало на порядок лучше. Есть еще несколько пожеланий:
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
4. В обработчике Destroy надо очищать все глобальные переменные, иначе они останутся висеть в памяти. К примеру, так:
hc.set_global(g_name)
5. В довесок к тому, о чем постом выше писал
DenZzz
: текущая системная папка может быть любой, не обязательно та, откуда запущено расширение. Поэтому чтение и запись файлов будут или выдавать ошибку, или производиться в самые неожиданные места диска. Нужно использовать hc.script_name.
6. В монитор хорошо бы выводить только необходимый минимум информации, не забивая все остальное.
«
Последнее редактирование: 10 мая 2011, 15:37:07 от Михаил
»
Сообщить модератору
Записан
Inversion
Новичок
Репутация: +6/-0
Offline
Сообщений: 17
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #16 :
10 мая 2011, 22:47:04 »
Ясно. Попробую еще поработать.
Сообщить модератору
Записан
igorek
Новичок
Репутация: +6/-0
Offline
Сообщений: 36
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #17 :
14 мая 2011, 21:59:05 »
Я бы предложил немного изменить алгоритм кэширования сайтов.
При первом посещении сайта выводить краткое сообщение в браузере:
Кэшировать данный домен example.site? И кнопку Да или Нет.
А дальше уже по вашему алгоритму, без счетчиков.
Бывают сайты которые полезно кэшировать, например некоторые форумы, ютуб,
а сайты типа rbc.ru не имеют смысла кэшировать, хотя могут посешать многократно.
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #18 :
14 мая 2011, 23:14:12 »
Цитировать
При первом посещении сайта выводить краткое сообщение в браузере
Категорически против, я этого своей маме не осилю пояснить. Или же делать, но опционально.
Сообщить модератору
Записан
Доктор ТуамОсес
Гость
Re: IgnoreOnceVisitedSites — помогает кэшировать с умом, экономя ресурс HDD/SSD
«
Ответ #19 :
27 мая 2011, 23:09:06 »
Цитата: Inversion от 07 мая 2011, 18:40:02
IgnoreOnceVisitedSites — расширение HC которое помогает не кэшировать сайты, на которые Вы, скорее всего, больше не зайдёте, или же заходите, но уж очень редко. Таким образом уменьшается количество мертвого груза и экономится ресурс дисковой подсистемы.
Позволю себе не согласиться.
Как раз редко посещаемые сайты могут содержать уникальную/эксклюзивную/важную информацию.
А что представляют собой сайты, которые посещаются регулярно и часто?
Это всякие форумы, сайты новостей и т.п. Таким образом они содержат кучу флуда, троллинга и т.п. мусора - т.е. они содержат какую-то сиюминутную информацию, про которую можно сказать "прочитал, выбросил и забыл"
Чтобы моя мысль была более понятна, проиллюстрирую её конкретным примером "из жизни".
Я, к примеру, не посещаю каждый день сайт, где описывается как Эйнштейн вывел свои формулы теории относительности. Даже раз в месяц не посещаю. А информация, содержащаяся на этом сайте, для меня очень важна
В то же время форумы на ixbt, sources.ru, и прочие я посещаю ежедневно по несколько раз (чтобы пофлудить/потроллить о политике, кино, сексе и т.п.). Но информацию с них я при всём желании не смогу назвать важной/ценной.
В связи с этим я считаю, что нужно кшировать ВСЕ файлы.
Но сделать два кэша: для мусора (особенно часто посещаемых сайтов) и для важной информации (редко посещаемых сайтов).
Это будет удобно и для Архивариуса 3000. Чтобы найти о чём Вы троллили неделю назад Вы ищите в кэше для мусора. А если Вы ищите ответ на какой-то серьёзный вопрос, то ищете архивариусом 300 в другом кэше.
Добавлено: 27 Мая 2011, 22:59:07
Цитата: Inversion от 07 мая 2011, 18:40:02
и экономится ресурс дисковой подсистемы.
О проблеме кэширования файлов всех подряд сайтов, которые я посещаю, я задумывался и ранее, проводя регулярные чистки в кэше HC, но когда у меня появился SSD диск в качестве основного, вопрос встал значительно серьезнее. Как Вы знаете, эти диски имеют ограниченный ресурс циклов перезаписи ячеек памяти, и для меня стало очень важно настроить HC так, чтобы он старался кэшировать только то, что более вероятно будет запрашиваться в будущем.
Исходя из этой логики, я решил, что разумно будет кэшировать регулярно посещаемые сайты и стараться избегать кэширования множества сайтов, который я открываю всего раз в жизни, например при просматривании сайтов из результатов поиска.
Странная у Вас какая-то логика.
Вы полагаете, что основной вклад в быстрый износ харда/SSD
вносят редко посещаемые, а значит и редко записываемые на хард/SSD сайты?
Т.е. сайт, который Вы закэшировали один раз за год вызовет бОлший износ, чем форум, который Вы посетили 150 000 раз за год и каждый раз кэшировали на хард/SSD?
«
Последнее редактирование: 27 мая 2011, 23:19:17 от Доктор ТуамОсес
»
Сообщить модератору
Записан
Страниц: [
1
]
2
3
Все
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...