Название: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: popkov от 20 марта 2007, 15:00:36 Недано решил создать эффективный набор правил HC для этого форума. И натолкнулся на проблему:
ссылки на страницы темы имеют вид: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/ А ссылки на конкретный пост имеют вид: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3072/#msg3072 Причём, если ввести http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/#msg3072 то страница откроется правильно, и будет прокручена к нужному сообщению! Не понимаю, почему последний вариант не используется по умолчанию, а вместо него применяется ссылка http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3072/#msg3072 которая заново загружает всю страницу ради просмотра одного поста??? Кроме того, непонятно, как написать правило для HC, исправляющее этот глюк - ведь URL http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3072/#msg3072 не содержит числа 100 - т.е. из него неясно, как можно получить "нормальный" URL, который уже есть в кэше (если тема ранее просматривалась): http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/ Это весьма досадный недостаток, учитывая не только зряшний расход траффика, но и то, что страницы форума открываются почему-то заметно медленнее, чем, например, на RU-Board... Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: Сергей от 20 марта 2007, 16:45:12 Почему нам не использовать традиционную ссылку на форум?
http://handycache.ru/forum/index.php Там таких приколов нет, похоже. Отличие только в отсутствии ссылок на сайт в шапке. Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: DenZzz от 20 марта 2007, 18:08:16 Почему нам не использовать традиционную ссылку на форум? http://handycache.ru/forum/index.php Там таких приколов нет, похоже. Отличие только в отсутствии ссылок на сайт в шапке. Да все также! Вот ссылка на твой пост выше: http://handycache.ru/forum/index.php?topic=359.msg3125#msg3125 Номера страницы в ней нет! Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: Сергей от 20 марта 2007, 19:21:38 И что дальше делать будем? Надо бороться с этим безобразием. Кэш ведь замусоривается.
Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: cepera_ang от 20 марта 2007, 20:05:24 Забить? Ибо форум - значит регулярно обновляется. А для старых страниц - отрицательный критерий свежести.
Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: DenZzz от 20 марта 2007, 21:54:39 И что дальше делать будем? Надо бороться с этим безобразием. Кэш ведь замусоривается. Я уже локально борюсь от замусоривания своего кэша правилом в "Преобразовании URL": #5#~#True#~#(handycache\.ru/component/option,com_smf/Itemid,\d+/topic,\d+)(\.\d+)?(;all)?[./].*#~#\1\2\3#~#False#~#True Оно: 1. Сохраняет страницы топика не как отдельные каталоги с вложенным файлом #_ , а просто как файлы topic,102.0 и т.д. 2. Отбрасывает многочисленные вариации типа: .msg* , .new/ , /topicseen,1/ чтобы не плодить кучу бесполезных файлов, придти на которые в автономке второй раз практически нереально! От замусоривания кэша спасает, а вот от повторной загрузки одинаковых страниц не очень... :) Забить? Ибо форум - значит регулярно обновляется. А для старых страниц - отрицательный критерий свежести. Не всегда это возможно! Вот, к примеру, старый пост: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg534/#msg534 Такого файла может и не быть у тебя в кэше, зато наверняка есть старая страница: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.0/ на который тот пост находится, но сопоставить их правилом ты не можешь! Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: popkov от 21 марта 2007, 14:26:23 DenZzz
Может, попросить администратора исправить этот глюк? Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: Rick от 21 марта 2007, 16:04:14 ссылки на страницы темы имеют вид: Правильно. Здесь "topic,78" - указывает на топик.http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/ А ссылки на конкретный пост имеют вид: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3072/#msg3072 "100" или "msg3072" - определяет страницу с которой показывать топик. Зависит от значения установки сколько сообщений на одной странице. Сейчас это значение 20. Т.е. 0, 1, ... 19 - приведут на первую страницу. 20-39 - на вторую и т.д. "msg3072" явно не указывает с какой страницы показывать топик, форум находит это сообщение и сам определяет на какой странице это сообщение должно показываться исходя из текущего значения количества сообщений на одной странице. Т.е. это два разных подхода: первый пляшет от порядкого номера сообщения в топике, а второй от уникального номера сообщения. Цитировать Причём, если ввести А если ввести любое значение <100 или >119 якоря #msg3072 на открывшейся странице не будет как и самого сообщения msg3072.http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.100/#msg3072 то страница откроется правильно, и будет прокручена к нужному сообщению! Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: popkov от 21 марта 2007, 17:57:09 "msg3072" явно не указывает с какой страницы показывать топик, форум находит это сообщение и сам определяет на какой странице это сообщение должно показываться исходя из текущего значения количества сообщений на одной странице. Но ведь ссылки вида Т.е. это два разных подхода: первый пляшет от порядкого номера сообщения в топике, а второй от уникального номера сообщения. А если ввести любое значение <100 или >119 якоря #msg3072 на открывшейся странице не будет как и самого сообщения msg3072. http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3072/#msg3072 генерируются автоматически, когда мы цитируем, например! Почему бы не делать их такими, чтобы при клике по заголовку цитаты страница бралась из кэша, а не загружалась заново из Интернета? На этом форуме введено ограничение, что редактировать свой пост можно только в течение часа - так зачем принуждать пользователей форума загружать всегда заново всю страницу с этим сообщением, если отрицательный критерий свежести в один час и так гарантирует, что интересующее меня сообщение не изменилось??? Я даже на RU-Board не обновляю старые страницы, хотя там нет ограничения в один час на редактирование сообщения! И оно может измениться в любой момент! Здесь же сообщения нельзя менять, но именно на этом форуме пользователи вынуждены грузить всё по новой, тратя время и деньги впустую! "msg3072" явно не указывает с какой страницы показывать топик, форум находит это сообщение и сам определяет на какой странице это сообщение должно показываться исходя из текущего значения количества сообщений на одной странице. Может быть, сделать какой-то простой алгоритм пересчёта (в скрипте самой страницы) или хотя бы перенаправлять на "нормальную" ссылку, а не выдавать в ответ на запрос http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.msg3072/#msg3072 всю страницу заново? Почему бы тогда просто не перенаправлять? И загружалось бы всё быстрее, и нагрузка на сервер снизилась бы... А то всё тормозит... Да ещё иногда вообще сообщения о перегрузке сервера возникают... Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: DenZzz от 21 марта 2007, 18:15:57 Rick
Так все-таки, технически возможно сделать, чтобы ссылки на конкретные посты в "Последних сообщениях", "Непрочитанных сообщениях" и самих темах выглядели как номер конкретной страницы топика с якорем поста? Это бы существенно увеличило экономию трафика/времени за счет загрузки старых страниц форума из кэша! Название: Re: Эффективное кэширование форума: ссылки н& Отправлено: Rick от 21 марта 2007, 22:24:07 технически все можно - можно и форум с нуля переписать.
так зачем принуждать пользователей форума загружать всегда заново всю страницу с этим сообщением, если отрицательный критерий свежести в один час и так гарантирует, что интересующее меня сообщение не изменилось??? Зависит от ссылки по которой пользователь зашел на страницу. В большинстве случаев никакой повторной загрузки той же страницы нет.Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: popkov от 23 марта 2007, 17:14:01 технически все можно - можно и форум с нуля переписать. Мне кажется, сделать переадресацию вместо того, чтобы выдавать заново всю страницу - это реальная задача.Зависит от ссылки по которой пользователь зашел на страницу. В большинстве случаев никакой повторной загрузки той же страницы нет. Я говорил конкретно о ссылках на посты темы типа:http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3208/#msg3208 Такие ссылки всегда приводят к повторной загрузке всей страницы темы и заодно замусоривают кэш файлами одноразового использования (и заметного размера, кстати!) Я уж не говорю о тормозах и расходе траффика впустую! Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: popkov от 27 марта 2007, 23:55:06 Размышления над тем, как эффективнее кэшировать форумы с таким неудачным для нас устройством, как у этого, натолкнули меня на интересную мысль.
Одним из недостатков этого форума для нас является отсутствие того самого знака вопроса "?", от которого пляшет "Алгоритм преобразования URL в имя файла в кэше". Форум (да и весь сайт handycache.ru) устроен так, что параметры для скрипта форума записываются через слэш "/", а не через "&" или ";", как уже давно стало стандартом для многих других серверов. И никакого знака вопроса "?", который бы указывал на то, что начинаются параметры скрипта, здесь не наблюдается. Вот типичные URL: http://handycache.ru/component/option,com_smf/Itemid,10/topic,78/ http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.0/ http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.0/prev_next,next/ http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.40/ http://handycache.ru/component/option,com_smf/Itemid,10/action,post2/ http://handycache.ru/component/option,com_smf/Itemid,10/action,post2/start,0/board,1/ http://handycache.ru/component/option,com_smf/Itemid,10/action,post/msg,3236/topic,367.0/sesc,dc240277a57de189bd192db6214877ff/ http://handycache.ru/component/option,com_smf/Itemid,10/action,post2/start,0/msg,3236/sesc,dc240277a57de189bd192db6214877ff/board,5/ http://handycache.ru/component/option,com_simplefaq/task,display/Itemid,3/catid,7/ Ну и "больное место" этого форума (по таким запросам сервер сам ищет, на какой странице находится требуемый контент, и отдаёт эту страницу целиком, вместо того, чтобы перенаправить на идентичную страницу, которая уже есть в кэше): http://handycache.ru/component/option,com_smf/Itemid,10/topic,367.msg3236/ http://handycache.ru/component/option,com_smf/Itemid,10/topic,78.new/ Скрипт этого сайта, по сути, весь запрос, отправляемый на сервер handycache.ru (естесственно, не содержащий имени серевера) - как раз и воспринимает как параметры скрипта. Причём разбор параметров производится именно по символам "/" (слэш), каждый из которых создаёт в нашем кэше отдельный каталог, что сильно увеличивает время, которое тратится на поиск файла в кэше, а также увеличивает фрагментацию и вообще нагрузку на винчестер, приводя к его ускоренному износу! Причём создание такого количества вложенных каталогов, по сути, совершенно неоправдано - ни с точки зренияя эффективности работы кэша, ни с точки зрения удобства анализа его содержимого! Вообще, для чего, собственно, решено было воспроизводить в кэше структуру каталогов сервера? Для удобства анализа и исследования содержимого кэша, чтобы можно было сделать выводы о внутреннем устройстве сайта, чтобы файлы, лежащие на сервере в одной папке, на диске располагались так же, а не как в кэше IE - все файлы с разных сайтов в перемешку! Но какой смысл воспроизводить на диске в виде структуры каталогов последовательности параметров сайтового скрипта??? Не лучше ли все их объединить и вместо последовательности вложенных каталогов создавать только один каталог с кучей файлов в нём или даже проще - множество файлов в корневом каталоге? Куда меньше была бы нагрузка на винчестер и куда быстрее производился бы поиск и чтение файла с диска при запросе браузера! Откровенно говоря, даже не знаю, какое универсальное решение данного вопроса предложить: ведь всё же есть на данном сайте и "нормальные" ссылки, для которых стоило бы (хоть и не обязательно создавая такое количество вложенных каталогов) сохранять структуру запроса в виде директорий: http://handycache.ru/forum/avatars/Actors/Brad_Pitt.jpg http://handycache.ru/forum/avatars/Musicians/Jewel.jpg http://handycache.ru/images/stories/mailporter.png Этот сайт, как я понимаю, не единственный, устроенный таким образом. Одно из возможных решений - для всех ссылок на данном сайте, которые не оканчиваются на "известное" расширение - заменять все слэши "/" на "#!". Кто что думает по этому поводу? Название: Re: Эффективное кэширование форума: ссылки на посты и на страницы темы Отправлено: DenZzz от 28 марта 2007, 00:30:27 Одно из возможных решений - для всех ссылок на данном сайте, которые не оканчиваются на "известное" расширение - заменять все слэши "/" на "#!". Это не спасет от замусоривания кэша одинаковыми файлами, которые вряд ли когда пригодятся даже в автономном режиме! Например ссылки: http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3350/#new http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3235/#msg3235 http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3208/#msg3208 http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3199/#msg3199 http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3349/topicseen,1/#msg3349 все ведут на одну страницу: http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.0/ Ну и зачем в кэше хранить столько файлов? Как я борюсь с этой проблемой локально, написал выше... (http://handycache.ru/component/option,com_smf/Itemid,10/topic,359.msg3151/#msg3151) Еще у меня в "Белом списке" есть пара правил, запрещающих кэширование служебных страниц: #10#~#True#~#^handycache\.ru/forum/index\.php\?action=(keepalive|post|quotefast)#~##~##~#False#~#True#~#False#~#False#~#False#~#False #10#~#True#~#^handycache\.ru/component/option,com_smf/Itemid,\d+/action,#~##~##~#True#~#True#~#False#~#False#~#False#~#False
Powered by SMF 1.1.3 SMF © 2006, Simple Machines LLC
Joomla Bridge by JoomlaHacks.com |