Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Новые предложения
»
Доработка процедуры: Очистка кэша
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц:
1
2
[
3
]
4
5
6
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Доработка процедуры: Очистка кэша (Прочитано 102461 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Доработка процедуры: Очистка кэша
«
Ответ #40 :
09 марта 2007, 13:17:45 »
Цитата: Михаил от 09 марта 2007, 11:42:01
Подожди. В Last_Access_Times.dat не хранятся ни размеры, ни реквизиты. Только имена файлов и все. Ты о чем?
М-да, тогда расскажи, как ты предлагаешь корректировать переменную CurrentCacheSize при
перезаписи
файлов, которые уже есть в кэше? Где будешь брать "старый" размер файлов в кэше?
Цитировать
Зачем нам туда лазить? Что искать? Я недопонял.
Представь, мы запросили файл, которого нет ни в List1, ни в List2, но он возмжно есть в Last_Access_Times.dat и нам надо перенести его в конец списка, т.к. дата доступа к нему должна измениться!
Или ты предлагаешь пока записать его в List2, а потом позже уже пересчитать Last_Access_Times.dat?
Цитировать
Посмотреть файлы никто не запрещает. Чтение файла картины не изменит.
Я говорил о просмотре перед удалением из кэша средствами "Историка", ТotalСommander-а и т.п.
Т.е. файл будет удален из кэша сторонней программой и HC об этом не узнает!
Цитировать
Перенос кэша целиком с одного компьютера на другой - тоже.
Целиком кэш на флешку не всегда влезет - они носят его отдельными каталогами или только самые "свежие" файлы по дате изменения.
Цитировать
Если кто-то все же не может не менять кэш вручную (хоть мне и непонятно, для каких целей это может быть нужно), пусть после этих действий жмет специальную кнопку в программе и Last_Access_Times.dat будет создаваться с нуля, что займет n-ное количество времени.
Если с нуля, то информация о датах доступа к файлам в Last_Access_Times.dat окажется неверной, т.к. на диске она может сбиваться по разным причинам! Собственно, из-за этого и
было предложено
ее хранить где-то отдельно!
«
Последнее редактирование: 09 марта 2007, 13:28:53 от DenZzz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #41 :
09 марта 2007, 13:38:06 »
DenZzz
Цитировать
М-да, тогда расскажи, как ты предлагаешь корректировать переменную CurrentCacheSize при перезаписи файлов, которые уже есть в кэше? Где будешь брать "старый" размер файлов в кэше?
А как делается перезапись? Берется старый файл, открывается, его содержимое стирается и заполняется новым. Вот когда файл "берется", мы и узнаем его "старый" размер. Почему это проблемно? Или ты имеешь ввиду перезапись не средствами самого НС, а "вручную"?
Цитировать
Представь, мы запросили файл, которого нет ни в List1, ни в List2, но он возмжно есть в Last_Access_Times.dat и нам надо перенести его в конец списка, т.к. дата доступа к нему должна измениться!
Или ты предлагаешь пока записать его в List2, а потом позже уже пересчитать Last_Access_Times.dat?
Именно так. Это и есть единственное назначение List2.
Цитировать
Если с нуля, то информация о датах доступа к файлам в Last_Access_Times.dat окажется неверной, т.к. на диске она может сбиваться по разным причинам! Собственно, из-за этого и было предложено ее хранить где-то отдельно!
Тут уж на выбор - либо хранить ее в Last_Access_Times.dat, либо в индексе.
«
Последнее редактирование: 09 марта 2007, 13:44:02 от Михаил
»
Сообщить модератору
Записан
Rick
Администратор
Репутация: +15/-1
Offline
Сообщений: 868
Re: Доработка процедуры: Очистка кэша
«
Ответ #42 :
09 марта 2007, 13:45:35 »
Цитата: Михаил от 09 марта 2007, 13:38:06
Берется старый файл, открывается, его содержимое стирается и заполняется новым. Вот когда файл "берется", мы и узнаем его "старый" размер.
Старый файл не читается - зачем? Он просто замещается новым файлом.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #43 :
09 марта 2007, 13:53:43 »
Цитата: Rick от 09 марта 2007, 13:45:35
Старый файл не читается - зачем? Он просто замещается новым файлом.
Но перед этой операцией можно взять из MFT, например, размер файла? Как мы определяем, есть ли файл в кэше? Обращаемся ж к MFT (или FAT).
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Доработка процедуры: Очистка кэша
«
Ответ #44 :
09 марта 2007, 13:59:58 »
Цитата: Михаил от 09 марта 2007, 13:38:06
Но перед этой операцией можно взять из MFT, например, размер файла? Как мы определяем, есть ли файл в кэше? Обращаемся ж к MFT (или FAT).
То есть "лишняя" операция с "медленным" диском уже не пугает? А как же "курочка по зернышку..."?
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #45 :
09 марта 2007, 14:04:55 »
DenZzz
Цитировать
То есть "лишняя" операция с "медленным" диском уже не пугает? А как же "курочка по зернышку..."?
Почему лишняя операция? Мы проверяем наличие файла в кэше и одновременно смотрим его размер. Бывают случаи, когда мы не смотрим предварительно на наличие файла в кэше?
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Доработка процедуры: Очистка кэша
«
Ответ #46 :
09 марта 2007, 15:07:19 »
Цитата: Михаил от 09 марта 2007, 14:04:55
Почему лишняя операция? Мы проверяем наличие файла в кэше и одновременно смотрим его размер.
Это две разные функции! Проверка наличия файла на диске, судя по
URLToCache.pas
, осуществляется с помощью быстрой функции GetFileAttributesA, а размер придется запрашивать отдельно функцией GetFileSize.
Цитировать
Бывают случаи, когда мы не смотрим предварительно на наличие файла в кэше?
В HC не знаю - надо у
mai62
уточнить... А вообще, да - с помощью функции CreateFile!
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #47 :
09 марта 2007, 16:37:48 »
DenZzz
Цитировать
а размер придется запрашивать отдельно функцией GetFileSize.
Сложно, конечно, говорить, т.к. не знаю точно. Но разве нельзя узнавать о несуществовании файла например по коду ошибки, возвращаемой GetFileSize? И не использовать при этом GetFileAttributesA вообще? Только откуда аргумент для GetFileSize брать?
Есть еще такая функция API, как GetFileInformationByHandle. Но опять же, как и в GetFileSize - откуда брать хэндл? Если я правильно понимаю, хэндл присваивается системой уже открытому файлу. Если так, то эти функции нам не подходят, т.к. файл открывать нам не надо.
GetFileAttributesEx более пригодна, т.к. предоставляет и сведения о размере файла. Но она не поддерживает Windows 95. У нас вообще идет речь о поддержке этой ОС?
А может, есть какая-нибудь родная функция Delphi, а не WINAPI, получающая размер файла по его имени и одновременно плюющаяся, если файл не существует?
«
Последнее редактирование: 09 марта 2007, 17:23:21 от Михаил
»
Сообщить модератору
Записан
cepera_ang
Beta tester
Репутация: +9/-4
Offline
Сообщений: 355
Re: Доработка процедуры: Очистка кэша
«
Ответ #48 :
09 марта 2007, 17:25:48 »
Цитата: Михаил от 09 марта 2007, 16:37:48
А может, есть какая-нибудь родная функция Delphi, а не WINAPI, получающая размер файла по его имени и одновременно плюющаяся, если файл не существует?
Если и есть, то это просто обертка для нескольких апи вызовов.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #49 :
09 марта 2007, 17:42:22 »
DenZzz
Цитировать
Я говорил о просмотре перед удалением из кэша средствами "Историка", ТotalСommander-а и т.п.
Т.е. файл будет удален из кэша сторонней программой и HC об этом не узнает!
...
Целиком кэш на флешку не всегда влезет - они носят его отдельными каталогами или только самые "свежие" файлы по дате изменения.
Есть в принципе возможность мониторить при помощи FindFirstChangeNotification папку кэша на предмет изменения/удаления входящих в нее файлов и добавления новых. Тогда на ее основе можно вести учет изменения CurrentCacheSize и иных параметров (в т.ч. при перезаписи/изменении файлов самим НС).
Только как быть, когда НС не запущен, а кэш меняют? Тогда пусть действительно после запуска НС давят специальную кнопку и долго ждут.
Но только нужно ли такой огород городить для поддержки желания пользователя менять кэш самостоятельно? Либо лучше взять на вооружение позицию, когда просмотр кэша возможен "вручную", а вот изменение - лишь средствами НС (либо специально поддерживающих совместимость с НС программ).
«
Последнее редактирование: 09 марта 2007, 18:28:00 от Михаил
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #50 :
10 марта 2007, 17:59:04 »
Цитата: Михаил от 09 марта 2007, 13:38:06
Тут уж на выбор - либо хранить ее в Last_Access_Times.dat, либо в индексе.
Лучше хранить дату последнего доступа, видимо, в индексе. В этом случае можно полноценно создать Last_Access_Times.dat с нуля в случае вмешательства пользователя в кэш либо при порче файла. Кроме этого, если максимальный размер кэша не задан либо намного больше текущего, то механизм автоматической очистки можно не включать вообще (т.е. не создавать Last_Access_Times.dat).
Сообщить модератору
Записан
Дем
Постоялец
Репутация: +6/-3
Offline
Сообщений: 167
Re: Доработка процедуры: Очистка кэша
«
Ответ #51 :
11 марта 2007, 21:40:31 »
Цитировать
Это две разные функции! Проверка наличия файла на диске, судя по URLToCache.pas, осуществляется с помощью быстрой функции GetFileAttributesA, а размер придется запрашивать отдельно функцией GetFileSize.
На уровне ОС - по первой функции читается сектор с диска, а по второй из этого сектора (уже сидящего в системном кеше) читается размер файла
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #52 :
23 июня 2007, 01:11:01 »
В связи с кардинальной переработкой дефолтных списков самое время, имхо, сделать в очистке давно предложенную галку:
Цитата: DenZzz от 12 января 2007, 22:25:56
Очистить кэш, используя "Черный список", "Переадресация" и "Преобразование URL", если "Белый список" их не отменяет.
По ходу работы этой опции неплохо б также переносить файлы, подпадающие под новый список "Преобразование URL", в соответствующие новые папки для дальнейшего прохождения службы.
Сообщить модератору
Записан
po4esal
Новичок
Репутация: +0/-0
Offline
Сообщений: 8
Re: Доработка процедуры: Очистка кэша
«
Ответ #53 :
24 марта 2008, 13:14:59 »
Скорее бы реализовали исключения для очистки кэша (( Очень жду!
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #54 :
24 марта 2008, 14:23:07 »
Цитата: po4esal от 24 марта 2008, 13:14:59
Скорее бы реализовали исключения для очистки кэша (( Очень жду!
Это можно делать и сейчас. Дальнейшее справедливо не только в очистке кэша, но и во всех списках, в т.ч. в тех, где колонки "Исключение" нет.
Если нужно задать Правило и Исключение, то набрать так:
^(?!.*
Исключение
).*
Правило
Сообщить модератору
Записан
Alexeyslav
Новичок
Репутация: +0/-0
Offline
Сообщений: 29
Re: Доработка процедуры: Очистка кэша
«
Ответ #55 :
24 марта 2008, 22:51:16 »
Чтобы сильно не мучится, предлагаю сделать отдельную утилиту для очистки кеша, которую например можно назначить в планировщик или запускать при старте системы. И собственно отпадет масса проблем и ограничений.
насчет исключений вида ^(?!.*Исключение).*Правило это хорошо, но есть парочку но:
1. нужно постоянно помнить эту форму - не каждому такое под силу
2. иногда нужно исключать довольно много, эта форма записи под это дело категорически не подходит - можно напутать и опять же - вспоминать все необходимые исключения.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Доработка процедуры: Очистка кэша
«
Ответ #56 :
24 марта 2008, 23:35:42 »
Цитата: Alexeyslav от 24 марта 2008, 22:51:16
но есть парочку но
Отправная точка моего поста - просьба
Цитата: po4esal от 24 марта 2008, 13:14:59
Очень жду!
^(?!.*Исключение).*Правило - это не самая удобная форма записи. Но она есть здесь и сегодня, и ее полезно знать и уметь применять также в списках "Преобразование URL" и "Переадресация". Другие более наглядные формы могут появиться лишь в неопределенном будущем. К тому времени те люди, которые "очень ждут" уже сейчас, давно могут махнуть на НС рукой.
«
Последнее редактирование: 24 марта 2008, 23:42:36 от Михаил
»
Сообщить модератору
Записан
Alexeyslav
Новичок
Репутация: +0/-0
Offline
Сообщений: 29
Re: Доработка процедуры: Очистка кэша
«
Ответ #57 :
24 марта 2008, 23:52:53 »
Вот для этого и предлагаю сделать отдельную утилиту - её не обязательно писать самому разработчику, она может быть и сторонней.
Сообщить модератору
Записан
key939
Новичок
Репутация: +0/-0
Offline
Сообщений: 5
Re: Доработка процедуры: Очистка кэша
«
Ответ #58 :
24 мая 2008, 00:15:18 »
Блин надоело ждать когда хоть чтото сделают.
Начал писать прогу для очистки кэша и обработке статистики. Подскажите пожалуйста по каким правилам преобразовываются URL в путь файла кэша.
Хочу чтоб чистка была не только по дате но и по другим параметрам например по количеству обращений к файлу; очень полезный параметр с помощью него можно узнать какие файлы лежат и не используются(удалить), а какие хоть и созданы давно но часто используются(хранить), какие файлы самые популярные(написать правило), среднее число обращений в неделю, какие приносят максимальную экономию и т.д.
Ой увлёкся извините если написал не туда.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Доработка процедуры: Очистка кэша
«
Ответ #59 :
24 мая 2008, 10:28:44 »
Цитата: key939 от 24 мая 2008, 00:15:18
Начал писать прогу для очистки кэша и обработке статистики.
По обработке статистики есть одна прога:
"WrSpy - программа для анализа логов прокси (в т.ч. HandyCache)"
, только она не делает анализ в разрезе файлов.
Цитировать
Подскажите пожалуйста по каким правилам преобразовываются URL в путь файла кэша.
Посмотри тему:
"Алгоритм преобразования URL в имя файла в кэше"
- там есть и исходники процедуры преобразования URL, и таблица преобразований.
Цитировать
какие файлы лежат и не используются(удалить), а какие хоть и созданы давно но часто используются(хранить)
HC же умеет чистить по дате использования! Правда, эта дата может сбиваться от работы некоторых программ...
Сообщить модератору
Записан
Страниц:
1
2
[
3
]
4
5
6
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...