Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Общие вопросы
»
Алгоритм преобразования URL в имя файла в кэше
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц:
1
...
4
5
[
6
]
7
8
...
13
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Алгоритм преобразования URL в имя файла в кэше (Прочитано 237619 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #100 :
19 марта 2007, 07:36:40 »
Все логично. Осталось уточнить, откуда взялись числа 200 и 190.
Цитировать
Как быть с длинными URL, которые сейчас уже сохранены в кэше?
Удалить? Их не много.
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #101 :
19 марта 2007, 09:45:34 »
Цитировать
- высчитывать CRC32 на основе URL, а не имени файла. Так будет более однозначный результат и меньше вероятнось потерь при преобразованиях.
Вообще-то не очень хорошо получится. Надо будет еще учитывать знак ? в URL. И прогонять через Преобразование URL перед вычислением CRC32.
Лучше оставить как есть, но дополнить алгоритм этими пунктами.
Цитировать
- помечать строку хеша. Так будет стразу понятно, что это урл был длинным.
- сделать опцию типа "Для длинных URL сохранять *.url". Возможно кому-то может понадобиться узнать реальный урл.
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #102 :
19 марта 2007, 21:50:35 »
DenZzz
Цитировать
Как быть с длинными URL, которые сейчас уже сохранены в кэше?
как правило там мусор, ничего полезного...
Сергей
Цитировать
Все логично. Осталось уточнить, откуда взялись числа 200 и 190.
Полная длина пути ограничена примерно 250 символами (кто-то высчитывал точнее, не помню). 50 символов мы оставляем на имя корневой папки кеша, остальные 200 используем на свое усмотрение.
#-12345678 - код+CRC32 - итого 10 символов
200-10=190
...
Хотя если быть более точным, то теоретически может понадобиться 202 символа для редиректа. И 204 символа для .url и .new
Тогда есть вариант: 195 и 185 - тут мы точно за предел в 200 символов не вылезем...
Цитировать
Вообще-то не очень хорошо получится. Надо будет еще учитывать знак ? в URL. И прогонять через Преобразование URL перед вычислением CRC32.
да про знак я забыл... поправлю...
тут я ошибся знак "?" не важен
а прогонять ничего не надо
(опять ошибка, см. следующий пост), кодить будем именно кусок урла
урл
http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/
файл handycache.ru\component\option,com_smf\#-A30935E6
где A30935E6 = CRC32(component/option,com_smf/Itemid,10/topic,78.100/) для 50 и 40
«
Последнее редактирование: 19 марта 2007, 22:39:26 от v0lt
»
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #103 :
19 марта 2007, 22:02:06 »
Цитата: v0lt от 19 марта 2007, 21:50:35
а прогонять ничего не надо, кодить будем именно кусок урла
урл
http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/
файл handycache.ru\component\option,com_smf\#-A30935E6
где A30935E6 = CRC32(component/option,com_smf/Itemid,10/topic,78.100/) для 50 и 40
Нет, здесь ты забываешь о множестве способов попасть на одну и ту же страницу, даже на данном форуме! Преобразование URL для того и нужно, чтобы для одной и той же страницы создавался только один файл, хотя URL'ов для неё может быть несколько...
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #104 :
19 марта 2007, 22:51:05 »
popkov
Цитировать
Нет, здесь ты забываешь о множестве способов попасть на одну и ту же страницу, даже на данном форуме! Преобразование URL для того и нужно, чтобы для одной и той же страницы создавался только один файл, хотя URL'ов для неё может быть несколько...
сорри, я перепутал список Преобразование URL с алгоритмом url2filename
Вообщем Преобразование URL итак идет до получения имени файла (до url2filename) и оно никуда не денется.
т.е. логика остается почти такой же
...->Запись в кеш->Преобразование URL->
fix_URL
->
URL2filename
->Кеш
(выделено новое/измененное)
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #105 :
19 марта 2007, 23:01:51 »
Цитата: v0lt от 19 марта 2007, 21:50:35
И 204 символа для .url и .new
Расскажи, плиз, когда появляется .url? Не встречался мне никогда, а знать хочется.
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #106 :
19 марта 2007, 23:20:42 »
Михаил
Цитировать
Расскажи, плиз, когда появляется .url? Не встречался мне никогда, а знать хочется.
никогда
, в текущеq версии не предусмотренно
есть только предложение создавать такой файл для очень длинных урлов
Выкладываю новую версию алгоритма:
измения
v1.21
:
-Добавлено кодирование длинных урлов
(для упрощения тестирования ввел доп. ограничения длины в 50, 100 и 150 символов)
-Улучшен интерфейс
PS: Кто знает как firefox фиксит урл (полная версия)?
PPS: У кого-нибудь есть исходники для функции unescape?
URL2filename_ver1_21.zip
(18.23 Кб - загружено 48 раз.)
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #107 :
20 марта 2007, 00:40:08 »
Цитата: DenZzz от 13 марта 2007, 00:31:30
А вот использовать "неразрывный пробел" мне не очень нравится!
Во-первых, потому что визуально он ничем не отличается от обычного, что может создать неудобство для пользователя, который захочет открыть файл в сторонней программе, набрав вручную его имя. Естественно, он вряд ли сам догадается, что там используется "неразрывный пробел".
Во-вторых, как ты уже озвучил, его очень не просто ввести с клавиатуры (надо помнить код) и нельзя скопировать из наглядного в этом плане Word-а.
В общем, использование "неразрывного пробела" затруднит ручную правку имен файлов и ручной ввод их в сторонних программах!
Должен сделать важное замечание: оказывается,
в URL'ах встречается не так уж мало символов, которые невозможно ввести с клавиатуры
...
Выполнил ради интереса поиск с помощью PowerGrep в своих логах по RegExp шаблону [^\w\s].
Шаблон простой, а результаты удивили (сгруппированы по возрастанию количества совпадений, первая цифра - это число найденных символов):
TOTAL: 8320744 matches in 47 groups in 391 files
1 ’
1 ¤
3 ?
4 ”
4 †
5 …
8 ‡
10 #
10 ¦
26 ‹
27 \
27 ¶
35 „
50 №
52 <
54 ±
69 ·
74 }
78 {
80 !
103 »
106 ‚
138 >
171 °
176 |
217 ^
218 $
287 [
289 ]
290 ~
1156 '
1166 @
10035 +
24378 *
75837 ;
97087 (
97138 )
102882 ?
169410 -
216965 ,
238311 &
342741 =
591334 %
724050 "
1107050 :
2130843 /
2387748 .
«
Последнее редактирование: 20 марта 2007, 00:50:45 от popkov
»
Сообщить модератору
Записан
cepera_ang
Beta tester
Репутация: +9/-4
Offline
Сообщений: 355
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #108 :
20 марта 2007, 02:23:58 »
А могут это быть ошибки? Например когда у меня на интернет-сервере сбойная планка памяти была - там при анализе в логах тоже случайные пользователи/урлы появлялись с разными нечитаемыми символами
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #109 :
20 марта 2007, 08:32:08 »
Цитата: popkov от 20 марта 2007, 00:40:08
Должен сделать важное замечание: оказывается,
в URL'ах встречается не так уж мало символов, которые невозможно ввести с клавиатуры
...
Большинство этих символов можно ввести с клавиатуры! А те, которые нельзя ввести, встретились в твоих логах крайне редко! Да и вообще, непонятно, как они там оказались! Если следовать стандартам, то их не должно быть в URL в чистом виде - только в виде кодов!
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #110 :
20 марта 2007, 14:05:45 »
Цитата: DenZzz от 20 марта 2007, 08:32:08
Да и вообще, непонятно, как они там оказались!
У меня большинство из них оказались в параметрах запросов на сайт
http://m.webtrends.com
Попробуй поискать все URL, начинающиеся на
http://m.webtrends.com
- а затем посмотри, есть ли там такие "ненормальные" символы.
Я согласен, что это-баннерный сайт, однако наличие таких URL говорит о том, что возможны и другие сайты, при просмотре которых генерируются URL с незакодированными такими символами.
Тем более, что у меня нашлось несколько таких URL, имеющих отношение к программе Windows Update - оказывается, она иногда тоже генерирует URL c незакодированными символами. Вот какой нашёлся:
http://office.microsoft.com/officeupdate/error.aspx?Code=3&Error=
Объект%20не%20поддерживает%20это%20свойство%20или%20метод
Я провёл поиск по более частному шаблону: [^!-~\w\s]
Результат:
TOTAL: 687 matches in 17 groups in 12 files
1 ’
1 ¤
3 ?
4 ”
4 †
5 …
8 ‡
10 ¦
26 ‹
28 ¶
35 „
51 №
55 ±
69 ·
104 »
111 ‚
172 °
Количество URL в логах у меня около 300000.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #111 :
20 марта 2007, 16:37:54 »
Цитата: popkov от 20 марта 2007, 14:05:45
Я согласен, что это-баннерный сайт, однако наличие таких URL говорит о том, что возможны и другие сайты, при просмотре которых генерируются URL с незакодированными такими символами.
(687 / 8320744) *100% = 0,008% - вероятность встретить такие символы в URL по данным твоих логов!
Не пойму, что ты предлагаешь?
Да эти символы могут встречаться в нестандартных URL и именах файлов.
Я был против использования "неразрывного пробела" в качестве спецсимвола в основном из-за того, что его визуально не отличить от обычного! А если в имени одного файла они вдруг окажутся одновременно, то это будет настоящая головоломка, если потребуется вручную набирать имя файла!
Поэтому и было предложено отказаться от использования "неразрывного пробела" в пользу другого символа "`", который есть на клаве, различим визуально и даже отсутствует в твоих логах! Какие проблемы?
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #112 :
20 марта 2007, 19:45:24 »
Цитата: DenZzz от 20 марта 2007, 16:37:54
Какие проблемы?
Да никаких
Просто
для ясности
отметил 2 момента:
1) Могут появляться файлы в кэше, имена которых нельзя ввести с клавиатуры
2) Есть вероятность (не уверен), что некоторые сторонние программы могут отказаться обрабатывать файлы с такими именами. Но EmEditor открывает - а мне на остальные по фигу...
Но проблемы здесь особой не вижу, т.к. это - большая редкость (хоть и чаще, чем ты посчитал: надо скорее 687 делить на 300000 URL).
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #113 :
20 марта 2007, 22:22:31 »
Цитата: popkov от 20 марта 2007, 19:45:24
хоть и чаще, чем ты посчитал: надо скорее 687 делить на 300000 URL.
Не! У тебя не может быть в логах 687 разных URL с этими символами! Вот смотри, только в одном твоем примере:
http://office.microsoft.com/officeupdate/error.aspx?Code=3&Error=
РћР
±
ъекС
‚
%20РЅРµ%20поддерР
¶
РёРІР
°
РµС
‚
%20СЌС
‚
Рѕ%20СЃРІРѕР
№
СЃС
‚
РІРѕ%20РёР
»
Рё%20РјРµС
‚
РѕРґ
я насчитал 10 символов из твоих 687 !
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #114 :
20 марта 2007, 23:06:55 »
ввел в Firefox-е этот урл, лис его естественно поправил
IE ничего не делал, так и оставил
в обоих случаях получил редирект на нормальный урл
повторю вопрос: кто смотрел исходники фокса, дайте функцию исправления URL. Или там что-то готовое используется?
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #115 :
21 марта 2007, 19:01:57 »
Люди, как все-таки лучше проверять длину имени файла?
Смотреть чтобы имя файла было меньше 200 или 195?
Первый вариант лучше нагляднее запоминается, но на самом деле файл может получиться из 204 символов.
Вариант 195 на вид не очень, но в результате получим гарантированно не более 200.
Пора поговорить о втроенной сортировке...
Мне кажется вопрос уже для многих актуален. У себя я сделал простейшую сортировку по имени домена.
Пример: файлы с handycache.ru лежат в \_
h
_\
h
andycache.ru\
файлы с forum.ru-board.com лежат в _
r
_\forum.
r
u-board.com\
домены начинающиеся на цифры лежать в _
0
_\
Это примитывный вариант, я сделал через преобразование URL. В результате в корневой папке всего 27 папок, а в каждой в среднем во столько же раз меньше хостов, чем раньше. Открыть такую папку куда быстрее. К тому же структура кеша осталось почти такой же.
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэ
«
Ответ #116 :
21 марта 2007, 19:32:02 »
Цитата: v0lt от 21 марта 2007, 19:01:57
Первый вариант лучше нагляднее запоминается
Не понимаю, чем он лучше? Надо просто решить, сколько символов оставлять для пути к папке Cache. 45 или 50 - по-моему, неважно - в любом случае, вряд ли кто-то будет делать для неё большую вложенность каталогов.
Цитата: v0lt от 21 марта 2007, 19:01:57
Пора поговорить о втроенной сортировке...
Мне кажется вопрос уже для многих актуален. У себя я сделал простейшую сортировку по имени домена.
Пример: файлы с handycache.ru лежат в \_
h
_\
h
andycache.ru\
файлы с forum.ru-board.com лежат в _
r
_\forum.
r
u-board.com\
домены начинающиеся на цифры лежать в _
0
_\
Это примитывный вариант, я сделал через преобразование URL. В результате в корневой папке всего 27 папок, а в каждой в среднем во столько же раз меньше хостов, чем раньше. Открыть такую папку куда быстрее. К тому же структура кеша осталось почти такой же.
Я уже поднимал этот вопрос на RU-Board, но меня не поняли. Для себя я сделал иначе: у меня просто создаются в кэше только папки для доменов второго уровня. Например, forum.ru-board.com у меня лежит в папке:
.\Cache\ru-board
..
com\forum\
А сайт ru-board.com у меня хранится в папке
.\Cache\ru-board
..
com\_NULL_\
Аналогично для всех остальных сайтов.
По-моему, это очень удобно, потому что всё, что относится к конкретному серверу (в данном случае ru-board.com) лежит в одной папке, а не разбросано по разным каталогам.
Для того, чтобы сохранить функционал Историка, мне пришлось написать также правила для Переадресации, которые переделывают имена сайтов обратно. В качестве признака, что это - запрос от Историка, я использовал присутствие двух точек подряд, отделяющих имя домена первого от имени домена второго уровня (вместо одной точки).
К сожалению, в Историке нет функции, позволяющей задать структуру кэша (то есть указать правило, по которому путь к файлу на диске должен преобразовываться в URL). По-моему, отсутствие такой возможности - серьёзная недоработка Историка. Именно из-за отсутствия такой возможности мне пришлось вместо одной точки ставить две между именами доменов 1 и 2-го уровней.
«
Последнее редактирование: 21 марта 2007, 19:37:13 от popkov
»
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #117 :
21 марта 2007, 20:57:43 »
popkov
Цитировать
По-моему, это очень удобно, потому что всё, что относится к конкретному серверу (в данном случае ru-board.com) лежит в одной папке, а не разбросано по разным каталогам.
Есть такое...
Но такой вариант может усложнить приведение кеша к стандартному виду (без спец. утилит). Поэтому я подобное не делал, да и лень было
еще можно расмотреть такие варианты:
(r)\ru-board.com(forum)\
_R_\ru-board.com[forum]\
R\ru-board.com[forum]\
R\ru-board.com,forum\
но, как я понимаю, скобки не очень удобны для регулярных выражений...
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #118 :
21 марта 2007, 21:05:49 »
Цитата: v0lt от 21 марта 2007, 19:01:57
Люди, как все-таки лучше проверять длину имени файла?
Смотреть чтобы имя файла было меньше 200 или 195?
ИМХО, без разницы.
Цитировать
Пора поговорить о втроенной сортировке...
...
Открыть такую папку куда быстрее. К тому же структура кеша осталось почти такой же.
Чем открыть такую папку быстрее? Сторонней программой для ручного просмотра кэша?
Более полезным мне кажется предложение из ToDo о сортировке параметров:
Цитировать
Сортировка параметров в URL, чтобы image.php?num=1&size=large и image.php?size=large&num=1 ссылались на один и тот же файл в кеше; (
Линк
)
Сообщить модератору
Записан
Дем
Постоялец
Репутация: +6/-3
Offline
Сообщений: 167
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #119 :
22 марта 2007, 03:46:59 »
Цитировать
Открыть такую папку куда быстрее. К тому же структура кеша осталось почти такой же.
У меня сделано иначе - отдельная папка, в которую прилинкованы "любимые" каталоги из кеша - порядка десятка штук.
А в общую лазаю редко, так что могу и подождать.
Сообщить модератору
Записан
Страниц:
1
...
4
5
[
6
]
7
8
...
13
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...