![]() |
|
|
![]()
|
|
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Я уже давно думаю ввести в своем движке кэширование некоторых данных выбираемых модулями. Вот думаю, если например есть у нас страничка, на которой выбираются некоторые данные из БД. Потом из них генерируется XML... вот я думаю, если кэшировать XML, а потом просто читать его из кэша если данные не менялись... мне кажется тут много чего можно сэкономить?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
||||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Wowa, это пройдет в том случае, если на странице нету меняющегося контента (типа голосования и т.п.).
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Если голосование(или какой-то другой скрипт) ты сам делаешь, то в него можно конечно встроить генерацию файла с результами после обновления данных. В нашем случае - добавления голосов. А вот если пользователь чужой скрипт к CMS подключит, то действительно - тут надо подумать...
Может быть имеет смысл захватывать вывод скрипта и его в стат. файл законять. |
|||
|
||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
А дальше? Интерактивность-то всё равно существенно понизится! Я сейчас тоже CMS пишу. У меня такая мысль. Для каждого модуля делать в его конфиге значение, определяющее его степень интерактивности. Скажем, N секунд. Допустим, юзер зашёл на страницу. Output модуля ложим в его кеш-файл. Заходит другой юзер. Смотрим, когда создавался кеш. Если это время + N > текущего времени, то берём данные кеша. Если нет, опять выполняем и кеширеум. А интерактивность определять, согласно специфике модуля: "пользователей онлайн", "случайный анеклот", "счетчики" - одно "мини-чат", "последние темы форума" - другое "голосования" - третье. Других путей я и не вижу. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
На чем можно сэкономить:
1. Кеширование запросов к базе (если используется способ хранения MyISAM, то можно держать время последнего изменения для каждой таблицы). 2. Кеширование шаблонов. Будет список модулей, для которых это разрешается (уже отпарсеный HTML будел лежать в файлах). 3. Кеширование на клиенте (выдавать выдавать и принимать в заголовках ETag). |
|||
|
||||
| Nobody |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 25.8.2003 Где: Россия, Москва Репутация: нет Всего: 16 |
-------------------- |
|||
|
||||
| rMaveric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: нет Всего: 6 |
В свое время писал клас абстрактной БД, требовалось чтобы приложение работая через этот клас вообще не заботилось о том с какой БД оно работает. Требовалось поддерживать MySQL, PostrigeSQL, XML, XLS и еще пару специфических.
Но теперь к сути: также решил организовать некую систему кеширования. Идея состояла вот в чем: при обращении к класу по методу select и указанием параметров клас проверял наличие скешированого запроса и отдавал его исключением был запрос с рандомайзеной сортировкой он вновь обращался к БД (но возможно лучше будет и его кешировать, а точнее кешировать результат без сортировки и рандомайзить его). Но при изменении данных (Insert Update) кеш затрагиваемых таблиц просто удалялся, что гарантировало последующее обращение к БД за обновленной информацией. Выйгрыш был достаточно существенный. Если идея покажется достойной могу поискать в бэкапах этот класс. -------------------- |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
rMaveric,
Какими методами использовалось кеширование? Интересно было бы взглянуть на класс. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Как насчёт модулей кэширования? Мы сейчас один используем весьма неплохой. Восможно так-же "глобальные" переменные теперь делать. То есть кэшь в памяти (например, пользователей находящихся на странице не надо заного определять с каждым вызовом, деревья-меню не надо каждый раз собирать, статистику, итд.)
Как аналогию для форума, можно представить кэш сообщений то есть самые просматриваемые будут идти из кэша, остальные из БД. Мы правда пока только за это взялись, но перспективы неплохие. А насчёт кэширования страниц я подумал, что прикольно было бы кэшировать узлы дерева, которые не меняются. Хотя думаю, что с ДОМом будет при этом заморочка. Там легче обьекты напрямую собирать. ХМЛ вообще очень удобно кэшировать. Вопрос только где, в памяти, или базе. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Vingrad CMS | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |