У меня на портале есть новости. Каждая страница новостей использует один шаблон, который в правом блоке выводит через Ditto выводит список заголовков последних 7 новостей с суммой рейтинга.
Так вот для того чтобы эти рейтинги корректно показывались, нужно чтобы каждая страницы новостей была некэшируемой.
Теперь попробую задать вопрос:
Если каждая страница новостей которых будет много будет некэшируема это плохо или нормально для работы портала - читай загрузки процессора на хостинге ?
не просто дизайнеру копаться в скриптах...спасибо за понимание
-
☆ A M B ☆
- 1,086 Posts
А почему бы не сделать сами страницы кешируемыми, а вот вызов сниппета - некешируемый?
Хотя в любом случае, если задались целью оптимизировать нагрузку, стоило бы в первую очередь отказаться от Ditto.
Разработка сайтов и программных модулей на MODX.
Опыт работы на MODx с 2005 года. Высокое качество.
Компания Baltic Design Colors:
http://www.bdcolors.ru.
Quote from: jonick at Dec 27, 2008, 02:03 AM
Если каждая страница новостей которых будет много будет некэшируема это плохо или нормально для работы портала
А Вы сами как думаете? Естественно, это хуже, но насколько хуже, зависит от посещаемости, особенностей генерируемых страниц, особенностей хостинга и многого другого.
Для начала можно сделать некэшируемый вызов Ditto на кэшированных страницах. Далее можно для генерации новостей использовать не Ditto, а специально написанный сниппет, обладающий меньшими возможностями, но потребляющий меньше ресурсов. Можно все кэшировать, но добавить небольшой плагин, который перед выводом страницы при необходимости будет исправлять рейтинги. Наконец, можно выдавать кэшируемые результаты, которые будут обновляться только при добавлении новой страницы и очистке кэша. Если новости публикуются часто, обновление рейтинга с задержкой будет допустимым. Если подумать, можно найти и другие варианты.
Заинтересовали 2 пункта:
Далее можно для генерации новостей использовать не Ditto, а специально написанный сниппет, обладающий меньшими возможностями, но потребляющий меньше ресурсов.
Есть готовые решения?
Можно все кэшировать, но добавить небольшой плагин, который перед выводом страницы при необходимости будет исправлять рейтинги.
Тоже для меня загадка...
не просто дизайнеру копаться в скриптах...спасибо за понимание
Quote from: jonick at Dec 28, 2008, 08:24 AM
Есть готовые решения?
. . .
Тоже для меня загадка...
Готовых решений нет, подразумевается, что сниппет и плагин можно написать самостоятельно, это не так сложно. Если познаний в PHP недостаточно, советы можно просто пропустить.
Очень часто на форуме появляются замечания, что лучше бы Дитто не использовать совсем. У меня тогда вопросы появляются: зачем тогда вообще его написали и где его можно использовать без напряга? (1) Неужели автор сего сниппета настолько неопытный разработчик, что написал кривые и неоптимизированные запросы? Уже вторая с лишним версия most downloaded сниппета -- а с запросами все по-прежнему? Почему так?
У меня на горизонте сейчас потребность использовать на главной странице сайта 4 (!) дитто-подобных раздела (новости + обновления одного, другого и третьего раздела сайта, соответственно, это 4 вызова Дитто с разными id и из разных директорий). Плюс RSS навесить. Вот я и думаю: тупо вкорячить 4 штуки Дитто, возможно, подредактировав его (тут на форуме были советы по обработке напильником, если не вру), или обратиться к специалистам (тут же на форуме) с целью создать что-то самописное или уж совсем хорошо обработать Дитто.
Про посещаемость сказать пока ничего не могу. Ну, если человек 500 в день зайдет -- это будет нормально. Но опять же, это очень предварительные оценки.
Пожалуйста, спецы, посоветуйте решение. Как сделать лучше?
Quote from: umanuma at Dec 28, 2008, 09:26 AM
Почему так?
Любое универсальное решение потребляет больше ресурсов, чем специализированное. Если заранее знать некоторые особенности, можно обойтись без многих вычислений и запросов к базе. Но при этом изменение условий потребует внесение корректив в программу.
Четыре запроса не страшны, если сделать вызов кэшируемым, хотя бы для нескольких из них.
В действительности в некоторых случаях описание параметров вызова Ditto и создание необходимых шаблонов по сложности превосходит создание простого сниппета, который просто один раз обращается к базе и выводит полученные результаты. Язык PHP не так сложен, и создание небольших сниппетов не требует значительных усилий.
Кстати, всегда можно выполнить все с использованием Ditto, а при увеличении нагрузки заменить его самописным (или заказным) сниппетом.
Quote from: umanuma at Dec 28, 2008, 09:52 AM
Как закешированный вызов поймет, что произошли обновления? Нужно чистить кеш после обновления?
Кэш автоматически чистится после добавления любого документа, так что первый раз после добавления страница будет долго грузиться. Некэшированный вызов нужен при многостраничном выводе или некоторых других специфических задачах.
Для оценки нагрузки полезно добавить в шаблон страницы вызовы [^qt^], [^q^], [^p^] и [^t^], возможно поместив их в комментарии, чтобы не портить внешний вид страницы.
-
☆ A M B ☆
- 1,086 Posts
Quote from: AKots at Dec 28, 2008, 09:39 AM
В действительности в некоторых случаях описание параметров вызова Ditto и создание необходимых шаблонов по сложности превосходит создание простого сниппета, который просто один раз обращается к базе и выводит полученные результаты. Язык PHP не так сложен, и создание небольших сниппетов не требует значительных усилий.
Абсолютно верно. И порой меня удивляют люди, которые готовы потратить несколько дней, чтобы вымучить из Ditto с его параметрами нечто необычное, нежели написать за несколько часов простенький скрипт, делающий то же самое.
С другой стороны, если нет абсолютно никаких познаний в веб-программировании и в PHP в частности, то кроме Ditto и подобных готовых решений, других вариантов нет. Но в этом случае не стоит ждать, что ваш сайт вдруг не загнется от наплыва посетителей из-за резко возросшей нагрузки на базу данных (что почти всегда является самым слабым местом в нагруженных веб-приложениях).
Разработка сайтов и программных модулей на MODX.
Опыт работы на MODx с 2005 года. Высокое качество.
Компания Baltic Design Colors:
http://www.bdcolors.ru.