HandyCache форум

Главная категория => Новые предложения => Тема начата: tea от 05 ноября 2007, 18:38:47



Название: Структура кэша. Можно ли усовершенствовать?
Отправлено: tea от 05 ноября 2007, 18:38:47
Можно ли сделать так, чтобы HandyCache сохранял в кэше домены третьего и более уровней как папки?

Например, сейчас у меня есть папка dia.sf.net, а надо чтобы было: sf.net\dia\

На крайний случай можно ли использовать домены как папки, т.е. net\sf\dia\ и т.п.


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 05 ноября 2007, 20:03:19
Можно ли сделать так, чтобы HandyCache сохранял в кэше домены третьего и более уровней как папки?

Можно через список "Преобразование URL".

Например, вот такое простое правило:
#5#~#True#~#^([^/]+)\.([^./]+\.[^./]+)#~#\2/\1#~#False#~#True
ставит домен 3 и выше уровня после имени сайта, т.е.: 
dia.sf.net/aaa/pic.gif  станет  sf.net/dia/aaa/pic.gif
domen4.dia.sf.net/aaa/pic.gif  станет  sf.net/domen4.dia/aaa/pic.gif

Если хочешь сделать домен 4 и выше уровней тоже отдельными папками, то доделай правило по аналогии.


Вообще, в теме "Алгоритм преобразования URL в имя файла в кэше (http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3203/#msg3203)" уже обсуждалось нечто похожее в плане встраивания подобного алгоритма в будущие версии HC...


Название: Re: Имя домена как имя папки?
Отправлено: tea от 06 ноября 2007, 03:09:50
А как же 68.183.62.55 ?
Такие адреса должны сохраняться как есть.

Вообще, хотелось бы какой-нибудь универсальности, так как сейчас, насколько я понял, для адресов с разным количеством доменов придётся писать отдельные правила.

P.S.:
В RegExp не силён — аналогию для четвёртого домена, придумывал весь вечер, но до сих пор не пойму как работает.
Поэтому, если возможно то, что прошу, дайте сразу правило.  :oops:


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 06 ноября 2007, 22:06:47
Вставь в "Преобразование URL" вместо того правила вот эти два подряд в указанном порядке:

#5#~#True#~#^(([^./]+)\.)?(([^./]+)\.)?(([^./]+)\.)?(([^./]+)\.)?([^./]+)\.([^./]+\.[^./\d]+)/#~#\10/\9/\8/\6/\4/\2/#~#False#~#True

#5#~#True#~#//+#~#/#~#False#~#False

Обрабатывает домены до 7-го уровня включительно. IP в URL не трогает.


Название: Re: Имя домена как имя папки?
Отправлено: tea от 08 ноября 2007, 03:11:57
Спасибо!  :good:


Название: Re: Имя домена как имя папки?
Отправлено: Сергей от 08 ноября 2007, 11:26:35
dia.sf.net/aaa/pic.gif  станет  sf.net/dia/aaa/pic.gif

А если на сайте sf.net уже есть папочка dia ?
Возникнет каша. Надо чтобы преобразование было взаимно-однозначным. Чтобы по файлу в кэше было возможно узнать его URL.


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 08 ноября 2007, 12:54:27
Возникнет каша. Надо чтобы преобразование было взаимно-однозначным. Чтобы по файлу в кэше было возможно узнать его URL.

tea просил отдельные папки - он их получил!

Вероятность совпадения имени домена и папки в URL не велика. Обратное преобразование требуется не всем! Кроме того, при использовании списка "Преобразование URL" обратное преобразование часто однозначно не обратимо!

А при желании простой правкой правила, приведенного выше, можно папки доменов в кэше помечать каким-нибудь спец.символом...


Название: Re: Имя домена как имя папки?
Отправлено: Сергей от 08 ноября 2007, 13:42:16
Вероятность намного выше нуля, поэтому лучше это предусмотреть. Чтобы потом не вылезли неожиданные  глюки.

Изначально хотелось прогонять через список преобразования не URL а собственно путь к файлу. Тогда это было бы более мощным инструментом по управлению местом хранения данных. Жаль что автору не понравилась эта идея.


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 08 ноября 2007, 19:40:24
Вероятность намного выше нуля, поэтому лучше это предусмотреть. Чтобы потом не вылезли неожиданные  глюки.

Я бы сказал, вероятность стремится к нулю! Есть реальные примеры таких совпадений и вылезших потом глюков?

В любом случае у пользователя всегда есть выбор отказаться от необратимых преобразований простым отключением списка "Преобразование URL"...

Цитировать
Изначально хотелось прогонять через список преобразования не URL а собственно путь к файлу. Тогда это было бы более мощным инструментом по управлению местом хранения данных.

Чем не устраивает текущая функциональность? Есть  реальная необходимость в "более мощных инструментах"?


Название: Re: Имя домена как имя папки?
Отправлено: tea от 08 ноября 2007, 20:03:43
Сергей, Вы не поверите, но мне совпадение имени папки и домена очень полезно.
Вопрос возник после того, как я однажды залез в папку кеша. HD у меня большой, кеш чищу редко — по настоящему ещё ни разу, поэтому там я увидел там «миллион» папок *.imgshake.com или что-то подобное.
В самой же папке img386.imgshake.com находится папка img386 (тот самый случай, о котором вы предупреждаете), а в ней только один файл, такое же в папке-домене img431.*.*, и т.д. (там кажется лежат аватары с какого-то часто посещаемого мною форума).
По второму разу закачивать этот хлам совсем не хочется, а если он перезатрётся — я не заплачу.

У меня HC работает как именно для кеша, чтобы не тянуть лишнего с интернета, поэтому обратное преобразование адреса мне ещё ни разу не понадобилось, сохранять полную структуру сайта сильной надобности также не возникало.
Вариант же, что в домене dia.sf.net будет лежать file1, и файл с другим содержимым, но с таким же именем лежит по адресу sf.net/dia/ для меня всё равно кажется меньшим злом, так как при новой организации кеша, я могу зайти папку домена, и уже там искать то, что когда читал, скачивал, а сейчас кроме того, что это было в новостях mail.ru уже ничего другого не помню.
Раньше приходилось искать по всему кешу…

Одно только уточнение: важно ли, в каком месте списка стоят эти правила — в конце или в начале? (Просто, вот это ваше «(?<=/)/» меня сильно настораживает — я не понимаю что оно делает  ???)


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 08 ноября 2007, 23:45:40
я увидел там «миллион» папок *.imgshake.com или что-то подобное.

Для отбрасывания этого и подобного мусора в дефолтных списках (http://handycache.ru/component/option,com_smf/Itemid,10/topic,31.0/) давно существует правило:

#5#~#True#~#^(galler(ies|y)|im?a?(ge?s?)?|(f|ph)ot(ki|os?)|pi(cs?|x)|tbn|www)\d+\.(?!.{2,4}/)#~##~#False#~#True

Поставь его в начало списка "Преобразование URL".

Цитировать
В самой же папке img386.imgshake.com находится папка img386

Если не добавишь правило выше, то тогда у тебя в кэше будет 2 папки img386:  imgshake.com\img386\img386\...

Цитировать
Одно только уточнение: важно ли, в каком месте списка стоят эти правила — в конце или в начале?

Да. Порядок правил в списке "Преобразование URL" имеет значение, поэтому я всегда указываю в каком порядке вставлять правила и куда!


Название: Re: Имя домена как имя папки?
Отправлено: tea от 09 ноября 2007, 00:56:32
Дефолтные списки я не трогал — это правило у меня стоит третьим, но img*.img*.com всё-таки присутствовали.

Два новых правила сейчас стоят последними.

Цитировать
в кэше будет 2 папки img386:  imgshake.com\img386\img386\...

Для меня это не принципиально, главное что в папке самого кеша этих папок не будет. Так их удалять легче.


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 09 ноября 2007, 09:53:02
Дефолтные списки я не трогал — это правило у меня стоит третьим, но img*.img*.com всё-таки присутствовали.

То правило должно резать домены 3-го уровня вида img<число> ! Возможно, эти папки в кэше появились у тебя еще до добавления третьего правила...


Название: Re: Имя домена как имя папки?
Отправлено: Сергей от 09 ноября 2007, 13:33:33
Есть  реальная необходимость в "более мощных инструментах"?
Например раскидывать разные сайты или типы файлов в разные папки на нескольких дисках, а не пихать все в одну большую папку кэша. Например, сделать чтобы файлы mp3 сохранялись не в папке кэша а сразу на диск с музыкой.


Название: Re: Имя домена как имя папки?
Отправлено: Михаил от 10 ноября 2007, 08:01:28
Одно только уточнение: важно ли, в каком месте списка стоят эти правила — в конце или в начале?
При твоей организации кэша этому комплексному правилу для правильной работы должно предшествовать правило, обрезающее номер порта. Убедись, что это так.


Название: Re: Имя домена как имя папки?
Отправлено: tea от 15 ноября 2007, 02:04:01
Накопилось немного статистики, поэтому…

Сейчас у меня появилось много дополнительных папок с именем «~».
Например: адрес «http://cоmmunity.lj.com/ru_jabber» сохраняется в папке «lj.com\community\~\ru_jabber\». Я так понимаю, что где-то остаётся лишний «слэш».
Оба правила, которые мне предложили, записаны как есть — подряд и стоят в конце списка «Преобразование URL».

Где и что мне исправить/добавить и т.п.?


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 15 ноября 2007, 08:46:24
Где и что мне исправить/добавить и т.п.?

Совсем забыл, что в версии 0.98b1 есть баг в работе опции "Заменить все" и в проверке необязательных правил... У меня-то в бета-версии оба правила работают как надо...

В общем, для совместимости с версией 0.98b1 замени 2-е правило на такое:

#5#~#True#~#//+#~#/#~#False#~#False


Название: Re: Имя домена как имя папки?
Отправлено: Valeri614 от 25 августа 2008, 09:54:42
Вставь в "Преобразование URL" вместо того правила вот эти два подряд в указанном порядке:

#5#~#True#~#^(([^./]+)\.)?(([^./]+)\.)?(([^./]+)\.)?(([^./]+)\.)?([^./]+)\.([^./]+\.[^./\d]+)/#~#\10/\9/\8/\6/\4/\2/#~#False#~#True

#5#~#True#~#//+#~#/#~#False#~#False

Обрабатывает домены до 7-го уровня включительно. IP в URL не трогает.

всё замечательно работает!! Только как бы исключения сюда добавить, дабы, к примеру bash.org.ru складывался папку bash.org.ru, а не org.ru?


Название: Re: Имя домена как имя папки?
Отправлено: DenZzz от 25 августа 2008, 12:06:37
Только как бы исключения сюда добавить

Проще всего через "Белый список".


Название: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 25 октября 2009, 01:55:35
Всем привет.

Из-за того что кэш в последнее время сильно разросся, а удалять оттуда что либо в автоматическом режиме стремно, а в ручном малореально, начали бродить мысли касательно усовершенствования его структуры.

Нынешняя структура кэша представляется мне неоптимальной. Я бы предпочел структуру вида:

Код:
http://www.ru-board.com/   -> d:\cache\ru-board.com\
http://forum.ru-board.com/ -> d:\cache\forum.ru-board.com\
заменить на такую:

Код:
http://ru-board.com/       -> d:\cache\com\ru-board\www\
http://forum.ru-board.com/ -> d:\cache\com\ru-board\forum\

И чем дальше, тем больше мне видится выгод в таком переходе. Это, в частности, снизит потребность в чистке кэша. Кажется здесь тот самый случай, когда дерево лучше списка.



Вопрос: возможно ли этого добиться штатными средствами HC?

А если нет, то не примет ли автор к рассмотрению?


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: DenZzz от 25 октября 2009, 02:35:22
Вопрос: возможно ли этого добиться штатными средствами HC?

Да. Хоть правилами списка "Преобразование URL", хоть расширением.

Похожие темы:
http://handycache.ru/component/option,com_smf/Itemid,10/topic,980.0/
http://handycache.ru/component/option,com_smf/Itemid,10/topic,31.msg13549/#msg13549


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 25 октября 2009, 16:51:01
DenZzz, благодарствую.

Темы вкурил.

Отображение URL -> cache буду делать таким:
Код:
http://example.com/            -> d:\cache\com\e\example\www\
http://www.example.com/        -> d:\cache\com\e\example\www\
http://sub.example.com/        -> d:\cache\com\e\example\sub\
http://subsub.sub.example.com/ -> d:\cache\com\e\example\sub.subsub\


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 25 октября 2009, 20:01:08
Сделал такие два правила для списка "Преобразование URL":

#5#~#True#~#^((\w)[^./]*)\.([a-z]{2,4})/#~#\3/\2/\1/www/#~#False#~#True

#5#~#True#~#^(?>(?>www)\.)?((?>[^./]+))?\.((?>[^./]+)\.)?((?>[^./]+)\.)?((?>[^./]+)\.)?((?>[^./]+)\.)?((?>[^./]+)\.)?((\w)[^./]*)\.([a-z]{2,4})/#~#\9/\8/\7/\6\5\4\3\2\1/#~#False#~#True

Вроде бы все работает как задумано.

Осталось как-то сконвертировать существующий кэш.


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: DenZzz от 25 октября 2009, 20:11:59
Осталось как-то сконвертировать существующий кэш.

http://handycache.ru/component/option,com_smf/Itemid,10/topic,2608.0/

Только предварительно убедись в корректности предлагаемых преобразований.


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 26 октября 2009, 20:59:06
Почистил правила

#5#~#False#~#^(?>www\.)?((\w)[^./]*)\.([a-z]{2,4})/#~#\3/\2/\1/www/#~#False#~#True

#5#~#False#~#^(?>www\.)?([^./]+)?\.([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?((\w)[^./]*)\.([a-z]{2,4})/#~#\9/\8/\7/\6\5\4\3\2\1/#~#False#~#True

группу "(?>www\.)?" в начале оставил на всякий случай.


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: Сергей от 02 ноября 2009, 15:54:13
Цитировать
http://ru-board.com/       -> d:\cache\com\ru-board\www\
http://forum.ru-board.com/ -> d:\cache\com\ru-board\forum\

www вообще-то отбрасывается по умолчанию.

В какие папки сохранятся ссылки вида:
http://forum.ru-board.com/
http://ru-board.com/forum/

Обе в папку \cache\com\ru-board\forum ?


Добавлено: 02 Ноября 2009, 16:19:33

Спасибо огромное автору расширения MoveRename Files.
Правда после него остается мусор в виде лишних пустых папок, но их легко удалить.
Главное - теперь можно реализовать компактный режим кэша, о чем давно мечтал уже.

#5#~#True#~#^([^/]+\.)?((\w)[^./]*\.[^./\d]+(:\d+)?/)#~#\3/\2\0#~#False#~#True
#5#~#True#~#^\d+(\.\d+){3}(:\d+)?/#~#_IP/\0#~#False#~#True

http://forum.ru-board.com/ -> cache\r\ru-board.com\forum.ru-board.com\

на первом уровне каталогов - начальные буквы доменов второго уровня
на втором - сами эти домены
глубже - полные имена сайтов.

Теперь все разложено по полочкам и легко вычищать мусор из кэша :)


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 03 ноября 2009, 03:21:01
www вообще-то отбрасывается по умолчанию.
Здесь www добавлено чтобы уровень вложенности везде был одинаковым. Мне это нужно чтобы в любом случае можно было однозначно преобразовать путь обратно в урл.

В какие папки сохранятся ссылки вида:
http://forum.ru-board.com/
http://ru-board.com/forum/

Обе в папку \cache\com\ru-board\forum ?
нет, в моей схеме будет так:
Код:
http://forum.ru-board.com/  -> d:\cache\com\r\ru-board\forum\
http://ru-board.com/forum/  -> d:\cache\com\r\ru-board\www\forum\

http://forum.ru-board.com/ -> cache\r\ru-board.com\forum.ru-board.com\
наверно это хорошо визуально когда вы смотрите кэш в файловом менеджере, но избыточно и сильно удлиняет пути, которые у нас ограничены 200 знаками, насколько я понял. Все что превышает 200 знаков будет отрезано и заменено хэшем. Не означает ли это что в вашей структуре кэша таких обрезанных путей окажется больше?


Название: Предложение по организации файлов кэша
Отправлено: Ice от 04 февраля 2010, 20:03:39
Есть просто мысль о небольшом улучшении удобства пользования :)
В папке Cache хранить каталоги с именами доменов только задом наперёд :)
Сейчас файл хранится по такому пути:
Код:
...HandyCache/Cache/releases.ubuntu.com/include/ubuntu.css
А сделать чтобы хранился по такому пути:
Код:
...HandyCache/Cache/com.ubuntu.releases/include/ubuntu.css
Т.е. просто сначала домен первого уровня, точка, домен второго уровня, точка, ... и т.д. все поддомены через точку :)
Тогда все каталоги упорядочаться в папке Cache по имени и будет удобно что-то искать... :)
Интересно, кто-нить ещё задумывался про такое? :)
Скажем, чтобы не портить пользователям уже существующие кэши, то можно такое нововведение сделать через галочку. Кто поставил её, тому нате доменные имена наоборот :)
Спасибо


Название: Re: Предложение по организации файлов кэша
Отправлено: DenZzz от 05 февраля 2010, 11:34:21
Интересно, кто-нить ещё задумывался про такое?

И не просто задумывались, а уже есть несколько вариантов практического использования разных структур кэша! И ты вполне можешь сам реализовать свой! Никакой новой "галочки" в HC не понадобится. Надо всего лишь добавить твое правило в список "Преобразование URL".

Варианты таких правил описаны здесь:
http://handycache.ru/component/option,com_smf/Itemid,10/topic,980.0/
http://handycache.ru/component/option,com_smf/Itemid,10/topic,31.msg13549/#msg13549


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: a.zhdanov от 19 октября 2010, 00:04:43
А нельзя сделать, чтоб допустим весь яндекс находился в одной папке, допустим гугл тоже в своей папке, я просто пытался своими кривыми руками одноклассников запихать в одно место, но не выходит ни чего, правила которые здесь нашёл - поставил, но что-то видать не так


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: popkov от 02 марта 2011, 00:55:09
А нельзя сделать, чтоб допустим весь яндекс находился в одной папке, допустим гугл тоже в своей папке
Можно, конечно! У меня структура кэша определяется следующими тремя правилами списка "Преобразование URL":

#5#~#True#~#^((\d+\.){3}\d+)(/|$)#~#_IP-адреса_/\1/#~#False#~#True
#5#~#True#~#^([\w\d\-]+)\.([\w]+)(:\d+)?(/|$)#~#\1..\2/_NULL_/#~#False#~#True
#5#~#True#~#^([\w\d\-\.]+)\.([\w\d\-]+)\.([\w]+)(:\d+)?(/|$)#~#\2..\3/\1/#~#False#~#True

Весьма удобно: в папке ru-board..com, к примеру, будут подпапки forum и _NULL_. В папку _NULL_, которая в списке папок будет всегда на самом верху, кладется содержимое собственно сайта http://ru-board.com, а в папку forum - сайта http://forum.ru-board.com. IP-адреса сохраняются в отдельную папку специально для них, которую легко просматривать и чистить. Две точки вместо одной изначально были введены для программы HC Historian, чтобы избежать двусмысленности при восстановлении URL из пути к файлу в кэше. Если не пользуешься Историком - можно оставить только одну точку.


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 03 марта 2011, 03:23:57
помнится я вдохновлялся вашими идеями придумывая себе устройство кэша )
вместо двух точек взял обратный порядок т.е. somesite.com -> com.somesite , а вместо _NULL_ — www


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: a.zhdanov от 04 марта 2011, 20:56:48
Можно, конечно! У меня структура кэша определяется следующими тремя правилами списка "Преобразование URL":

#5#~#True#~#^((\d+\.){3}\d+)(/|$)#~#_IP-адреса_/\1/#~#False#~#True
#5#~#True#~#^([\w\d\-]+)\.([\w]+)(:\d+)?(/|$)#~#\1..\2/_NULL_/#~#False#~#True
#5#~#True#~#^([\w\d\-\.]+)\.([\w\d\-]+)\.([\w]+)(:\d+)?(/|$)#~#\2..\3/\1/#~#False#~#True

Весьма удобно: в папке ru-board..com, к примеру, будут подпапки forum и _NULL_. В папку _NULL_, которая в списке папок будет всегда на самом верху, кладется содержимое собственно сайта http://ru-board.com, а в папку forum - сайта http://forum.ru-board.com. IP-адреса сохраняются в отдельную папку специально для них, которую легко просматривать и чистить. Две точки вместо одной изначально были введены для программы HC Historian, чтобы избежать двусмысленности при восстановлении URL из пути к файлу в кэше. Если не пользуешься Историком - можно оставить только одну точку.
Отлично! Спасибо! Теперь всё как я хотел :D


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: Ontario от 06 мая 2011, 07:03:47
Почистил правила

#5#~#False#~#^(?>www\.)?((\w)[^./]*)\.([a-z]{2,4})/#~#\3/\2/\1/www/#~#False#~#True

#5#~#False#~#^(?>www\.)?([^./]+)?\.([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?((\w)[^./]*)\.([a-z]{2,4})/#~#\9/\8/\7/\6\5\4\3\2\1/#~#False#~#True

группу "(?>www\.)?" в начале оставил на всякий случай.


попробывал структуру кэша от mirny, вроде нормально
можно эти правила оптимизировать или оставить так?


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 06 мая 2011, 17:39:34
Вот что у меня сейчас стоит:

Код:
#5#~#True#~#^(([0-9a-z])[^./]*)\.([a-z]{2,4})/(?!\#-[0-9a-z]/)#~#\3/#-\2/\1/www/#~#False#~#True
#5#~#True#~#^([^./]+)\.([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?(([0-9a-z])[^./]*)\.([a-z]{2,4})/#~#\9/#-\8/\7/\6\5\4\3\2\1/#~#False#~#True
#5#~#True#~#^([a-z]{2})/\#-[0-9a-z]/(com?|net|org|biz|edu|gov|me|ac|pp|int?|ltd|plc)/(?!www/)(([0-9a-z])[^/.]*)/#~#\1.\2/#-\4/\3/www/#~#False#~#True
#5#~#True#~#^([a-z]{2})/\#-[0-9a-z]/(com?|net|org|biz|edu|gov|me|ac|pp|int?|ltd|plc)/(([0-9a-z])[^/.]*)\.([^/]+)/#~#\1.\2/#-\4/\3/\5/#~#False#~#True
Два последних правила необязательны, они мне нужны для того чтобы обрабатывать домены типа somesite.org.ru Вся эта группа правил должна стоять в конце списка.


Следующие три правила полезно добавить в начало списка:

Код:
#5#~#True#~#^[^:/@]+:[^:/@]+@(www\.)?(?=[^/]+/)(?# login:pass@example.com -> example.com)#~##~#False#~#True
#5#~#True#~#^([^:/]+):\d+/(?# example.com:8080 -> example.com)#~#\1/#~#False#~#True
#5#~#True#~#^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(?# 123.123.123.123 -> 123-123-123-123.ip)#~#\1-\2-\3-\4.ip/#~#False#~#True

Все правила отлажены и работают. Впрочем если б я все это сейчас делал, то уменьшил бы вложенность.


Название: Re: Структура кэша. Можно ли усовершенствовать?
Отправлено: mirny от 08 мая 2011, 16:11:53
(http://farm3.static.flickr.com/2744/5699350648_e98218158e_m.jpg)

Модифицировал структуру из своего предыдущего поста так, как мне давно хотелось. В правила добавлены комментарии. На пикче показано отображение адресов: mail.google.com; google.com; bash.org.ru

Желающие могут тестить.

Код:
True#~#^([^./]*)\.([a-z]{2,4})/(?# somesite.com/ -> com.somesite/www/)#~#\2.\1/www/#~#False#~#True
True#~#^([^./]+)\.([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]+\.)?([^./]*)\.([a-z]{2,4})/(?# sub7.sub6.sub5.sub4.sub3.sub2.sub1.somesite.com/ -> com.somesite/sub1.sub2.sub3.sub4.sub5.sub6.sub7/)#~#\9.\8/\7\6\5\4\3\2\1/#~#False#~#True
True#~#^([a-z]{2}\.)(com?|net|org|biz|edu|gov|me|ac|pp|int?|ltd|plc)/(?!www/)([^/.]*)/(?# uk.co/somesite/ -> uk.co.somesite/www/)#~#\1\2.\3/www/#~#False#~#True
True#~#^([a-z]{2}\.)(com?|net|org|biz|edu|gov|me|ac|pp|int?|ltd|plc)/([^/.]*)\.([^/]+)/(?# uk.co/somesite.sub1.sub2.sub3.sub4.sub5.sub6/ -> uk.co.somesite/sub1.sub2.sub3.sub4.sub5.sub6/)#~#\1\2.\3/\4/#~#False#~#True


Название: Снова о реформе кэша
Отправлено: mirny от 30 мая 2011, 01:37:58
Тип файла я бы писал не в тело документа, как это делается сейчас, а прибавлял к названию файла в кэше.

Как-то так, например:

Код:
http://somesite.com/xmldoc.php  -> somesite.com\xmldoc.php#.xml
http://somesite.com/picture.php -> somesite.com\picture.php#.jpg
http://somesite.com/            -> somesite.com\#.html

В чем профит:
- новый список «не обновлять» станет проще
- файлы из кэша легче открывать, когда они с правильным расширением
- ХЦ в автономном режиме сможет отдавать правильные заголовки, ориентируясь на расширение файла в кэше
- ????



Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 30 мая 2011, 09:22:06
Тип файла я бы писал не в тело документа, как это делается сейчас, а прибавлял к названию файла в кэше.

А название кодировки HTML куда девать? Она тоже в файл пишется.

Цитировать
- новый список «не обновлять» станет проще

Не станет. Список «Не обновлять» работает по исходным URL, а не по преобразованным.

Кроме того, для HC уже есть расширения из группы «Не обновлять...», которые работают по типам файлов,  невзирая на URL.

Цитировать
- файлы из кэша легче открывать, когда они с правильным расширением

Кому легче? Пользователю?
HC станет намного сложнее, т.к. в момент запроса определить точное имя файла будет невозможно. Придётся перебирать все возможные варианты, что отнимет время и нагрузит диск лишней работой!

Цитировать
- ХЦ в автономном режиме сможет отдавать правильные заголовки, ориентируясь на расширение файла в кэше

Он и сейчас это хорошо умеет, ориентируясь на сигнатуры файлов и те подсказки, которые сам себе оставил.


P.S. При желании, можешь сам написать расширение, которое будет делать то, что ты предлагаешь. Но сразу предупреждаю, что работа НС значительно замедлится!



Название: Re: Снова о реформе кэша
Отправлено: mirny от 30 мая 2011, 13:18:32
>А название кодировки HTML куда девать? Она тоже в файл пишется.

Код:
<head>
<!-- text/html; charset=windows-1251 from header (HC) -->
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

Писать кодировку в файл вообще не нужно, ящитаю (в нынешнем виде уж точно, см пример выше — код взят из этой самой страницы в кэше), а то и вредно, если это файл css или xml — они от этого ломаются. Как вариант можно конвертить все в utf-8 либо вписывать кодировку правильно, что сложнее.

Сейчас ухожу, как вернусь — допишу по другим пунктам.


Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 30 мая 2011, 14:20:13
Писать кодировку в файл вообще не нужно, ящитаю (в нынешнем виде уж точно, см пример выше — код взят из этой самой страницы в кэше),

В этом конкретном случае не нужно. Но много было случаев, когда кодировка вообще не указана в файле или указана неправильная! Из-за чего браузер начинал показывать из кэша вместо текста кракозябы.

Писать в HTML свою строку с Content-Type HC стал не сразу и не от хорошей жизни. Много проблем было до этого решения...

Цитировать
а то и вредно, если это файл css или xml — они от этого ломаются.

А в эти файлы свою строку никто и не пишет! Если у тебя есть конкретные примеры, то это баг. Дай ссылку - будем исправлять.

Цитировать
Как вариант можно конвертить все в utf-8

Плохой вариант, начиная от лишней работы и кончая размером файла на диске.

Цитировать
либо вписывать кодировку правильно, что сложнее.

Раньше так и было, но были проблемы, пришлось отказаться. HC стал дописывать в HTML свою строку в виде комментария.


Название: Re: Снова о реформе кэша
Отправлено: mirny от 30 мая 2011, 18:47:39
Если очень хочется куда-то эту кодировку записать, можно создавать файлик meta.txt в корне каждого хоста и вписывать ее туда. Кодировка в пределах сайта одна и таже же, кроме случаев лютой патологии.

Вообще можно всякого туда понавписывать. Реальный адрес хоста, например (с www. или без); номер порта, если нестандартный; логин:пароль@ тоже лучше туда чем в названии папки.


Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 30 мая 2011, 22:59:13
Если очень хочется куда-то эту кодировку записать

Это не прихоть, а реальная необходимость, подкрепленная многолетним опытом!

Цитировать
можно создавать файлик meta.txt в корне каждого хоста и вписывать ее туда.

Уже обсуждалось ранее, но это увеличит количество дисковых операций и, следовательно, замедлит работу HC.
Решили, что оптимальнее будет прикрутить к HC базу данных SQLite для хранения мета-данных, но это пока не реализовано...

Цитировать
логин:пароль@ тоже лучше туда чем в названии папки.

логин:пароль@ в URL HTTP запроса быть и не может! См. RFC 2616.


P.S. Но хранение кодировки это вовсе не единственное "слабое место" в твоем предложении! Остальные перечисленные проблемы как решать предлагаешь?


Название: Re: Снова о реформе кэша
Отправлено: mirny от 31 мая 2011, 01:17:02
>Но хранение кодировки это вовсе не единственное "слабое место" в твоем предложении!

>HC станет намного сложнее, т.к. в момент запроса определить точное имя файла будет невозможно. Придётся перебирать все возможные варианты, что отнимет время и нагрузит диск лишней работой!

Ты так уверенно говоришь, что я чуть тебе не поверил. Это просто вопрос реализации, а не слабое место.

Рассмотрим пример для наглядности:

Случаев когда адрес оканчивается на / а там лежит не html исчезающе мало, поэтому предположить что файл в кэше будет называться #.html достаточно безопасно. Если произошла ошибка, срабатывает обработка исключений. И тогда действительно «Придётся перебирать все возможные варианты, что отнимет время и нагрузит диск лишней работой!» В исключительном случае.


>логин:пароль@ в URL HTTP запроса быть и не может! См. RFC 2616.

в RFC может быть и не может, а в HC мне когда-то для такого случая правило пришлось писать

#5#~#True#~#^[^:/@]+:[^/@]+@(www\.)?(?=[^/]+/)(?# login:pass@example.com -> example.com)#~##~#False#~#True



Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 31 мая 2011, 09:37:39
Случаев когда адрес оканчивается на / а там лежит не html исчезающе мало, поэтому предположить что файл в кэше будет называться #.html достаточно безопасно. Если произошла ошибка, срабатывает обработка исключений. И тогда действительно «Придётся перебирать все возможные варианты, что отнимет время и нагрузит диск лишней работой!» В исключительном случае.

Ты специально выбрал самый простой вариант? А если адрес заканчивается не на "/", а на ".php", ".cgi", "abcde?p=1" и т.п. Content-Type может быть любой. Будешь перебирать каждый раз все варианты? Это частый случай, а не исключительный!

Цитировать
в RFC может быть и не может, а в HC мне когда-то для такого случая правило пришлось писать
#5#~#True#~#^[^:/@]+:[^/@]+@(www\.)?(?=[^/]+/)(?# login:pass@example.com -> example.com)#~##~#False#~#True

Написать-то можно все, что угодно. Это не значит, что оно будет работать!
А реальность такова, что в HTTP-запросе не может быть никаких "логин:пароль@". Даже браузер такой URL не понимает!
Если же ты имел в виду FTP-запрос, то твое правило и на нем не будет работать. Проверь в тренажере...


Название: Re: Снова о реформе кэша
Отправлено: mirny от 31 мая 2011, 10:56:16
>Ты специально выбрал самый простой вариант?

Дело не в варианте, а в паттерне.

Код:
try:
    Берем самый ожидаемый Content-Type
except NoSuchFile:
    Не вышло, смотрим внутрь папки
   

Кстати вас ист «перебирать каждый раз все варианты»? Разве функция подобная glob() (http://docs.python.org/library/glob.html) не существует в Делфи?

>Написать-то можно все, что угодно. Это не значит, что оно будет работать!

Это правило писалось для админки одного старого сайта. Таки работало. И в тренажере и на сайте.


>>ХЦ в автономном режиме сможет отдавать правильные заголовки, ориентируясь на расширение файла в кэше
>Он и сейчас это хорошо умеет, ориентируясь на сигнатуры файлов и те подсказки, которые сам себе оставил.

Умеет, но таки не очень хорошо. И txt и xml для него на одно лицо, выдает в виде хтмля.


Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 31 мая 2011, 14:04:58
Кстати вас ист «перебирать каждый раз все варианты»? Разве функция подобная glob() (http://docs.python.org/library/glob.html) не существует в Делфи?

Существует, но она и работает именно перебором всех файлов в директории, собственно также, как и glob() работает с помощью os.listdir(). И в Lua есть подобная функция lfs.dir().
Но работают они очень медленно, особенно когда в директории тысячи файлов, что совсем не редкость!

Цитировать
Это правило писалось для админки одного старого сайта. Таки работало. И в тренажере и на сайте.

Не знаю, где там у тебя работало, но ни один браузер в таком виде HTTP-запрос не пропустит! Если настаиваешь, то давай реальный рабочий пример.


Название: Re: Снова о реформе кэша
Отправлено: mirny от 31 мая 2011, 20:45:32
>Но работают они очень медленно, особенно когда в директории тысячи файлов, что совсем не редкость!

С этим можно справиться. Offline Explorer тому пример — по достижении тысячи файлов в папке начинает распихивать содержимое по служебным подпапкам.

>ни один браузер в таком виде HTTP-запрос не пропустит! Если настаиваешь, то давай реальный рабочий пример.

Не настаиваю. Давно было. Может и впрямь теперь по-другому.


Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 31 мая 2011, 22:31:21
С этим можно справиться. Offline Explorer тому пример — по достижении тысячи файлов в папке начинает распихивать содержимое по служебным подпапкам.

Все равно такой кэш будет работать в разы медленнее, чем сейчас! Это не приемлемо.
Да и польза от такой структуры кэша спорна. Нерешенных проблем всплывает гораздо больше...


Название: Re: Снова о реформе кэша
Отправлено: mirny от 31 мая 2011, 22:55:56
>Все равно такой кэш будет работать в разы медленнее, чем сейчас!

Вовсе не факт. Замедление проявляется, только в случае, когда мы не угадали тип файла. Думаю реально, собрав статистику, подключив к алгоритму эвристику текущий список не обновлять, лол. Дотвикать процент промахов до приемлемого уровня.

Сравним с тем, что имеем сейчас:

  • если этот файл — html, то в него можно вписать, что он html (Великолепно, Кэп!)
  • если это не html, то мы SOSNOOLEY


Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 01 июня 2011, 13:29:52
Вовсе не факт. Замедление проявляется, только в случае, когда мы не угадали тип файла.

А гадать придется довольно часто! Допустим, зашли на новую страницу, ее файлов в кэше еще нет, но мы об этом не знаем. Что будем делать? Предположим, что это HTML. Проверили, файл на диске не найден. Что дальше? Продолжим предполагать: а вдруг это картинка JPG, а вдруг это картинка GIF, а вдруг это картинка TIF, а вдруг это флэш SWF, а вдруг это видео FLV и т.д. и т.п.? Будем перебирать все варианты? Их же десятки! И так с каждым новым файлом! Вот тебе и замедление в разы на ровном месте!

Цитировать
Думаю реально, собрав статистику, подключив к алгоритму эвристику текущий список не обновлять, лол. Дотвикать процент промахов до приемлемого уровня.

Не реально! И эвристика в случае выше не поможет. Все равно придется перебирать все варианты, чтобы не пропустить тот единственно верный.

Кстати, ты почему-то проигнорировал мою фразу, что список «Не обновлять» работает по исходным URL, а не по преобразованным. По путям и именам файлов в кэше он не работает! Или ты предлагаешь переделать логику работы списка "Не обновлять". Тогда практически всем пользователям придется корректировать свои правила в списке, да и работа самого списка существенно замедлится. Думаю, автор HC никогда на это не пойдет.

Цитировать
Сравним с тем, что имеем сейчас:

  • если этот файл — html, то в него можно вписать, что он html (Великолепно, Кэп!)
  • если это не html, то мы SOSNOOLEY

Тут ты не прав! Помимо HTML, HC прекрасно определяет типы и других файлов по сигнатурам. К примеру, картинки и видео. Некоторые файлы определяются по расширению, когда оно есть. А с остальными файлами прекрасно разбирается сам браузер! Уже и не помню, когда у меня были проблемы в браузере из-за работы HC в автономном режиме.

Тогда ради чего весь этот сыр-бор? Чтобы тебе было удобно вручную ковыряться в кэше? И ради этого придется решать кучу новых проблем:
- новый способ хранение кодировок HTML;
- изменение логики работы списка "Не обновлять";
- новый эвристический алгоритм угадывания имен файлов;
- существенное замедление работы HC с кэшем и увеличение нагрузки на диск.

Если у тебя сейчас есть реальные проблемы с определением типа файлов в автономном режиме HC, то давай конкретные ссылки. Подумаем, как решить эти проблемы с наименьшими потерями. Если ссылок таких нет и это лишь твое "хотение", то никто не мешает тебе реализовать его отдельным расширением. Все необходимое для этого в инструментарии HC уже есть...


Название: Re: Снова о реформе кэша
Отправлено: mirny от 02 июня 2011, 01:51:34
>Допустим, зашли на новую страницу, ее файлов в кэше еще нет, но мы об этом не знаем. Что будем делать?

Очевидно, что перебирать вслепую кучу вариантов в надежде найти страницу, которой может вообще не быть — негодная идея. Если смотреть в папку тоже нельзя, ибо медленно, на ум пока приходит только одно — ставить указатель с хедером (как это делается в случае редиректа).

Код:
http://somesite.com/xmldoc/  ->  somesite.com\xmldoc\#m
                                 somesite.com\xmldoc\#.xml

Что получается:

предположили #.html
    нет такого файла
обратились к #m
    PROFIT
#m тоже отсутствует
    тогда мы знаем, что такой страницы в кэше нет
   
   
и, разумеется, для случая \htmldoc\#.html указателя ставить не надо, ибо там не ошибешься.


>Тогда ради чего весь этот сыр-бор?

Просто нашел хороший проксик на питоне (http://logicerror.com/archiverProxy.html) и теперь руки чешутся запилить всякие ништяки на его основе, которые я врятли увижу в HC. Пока определяюсь какие именно и стОит ли.


Название: Re: Снова о реформе кэша
Отправлено: DenZzz от 02 июня 2011, 10:36:13
Просто нашел хороший проксик на питоне и теперь руки чешутся запилить всякие ништяки на его основе, которые я врятли увижу в HC.

Можешь запилить эти ништяки на НС. Все для этого есть...


Название: Re: Снова о реформе кэша
Отправлено: mirny от 02 июня 2011, 20:40:12
>Можешь запилить эти ништяки на НС. Все для этого есть...

OK. Пошел разбираться...