Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кэширование данных, мысль 
:(
    Опции темы
IZ@TOP
Дата 25.1.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Я уже давно думаю ввести в своем движке кэширование некоторых данных выбираемых модулями. Вот думаю, если например есть у нас страничка, на которой выбираются некоторые данные из БД. Потом из них генерируется XML... вот я думаю, если кэшировать XML, а потом просто читать его из кэша если данные не менялись... мне кажется тут много чего можно сэкономить?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 28.1.2006, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(IZ@TOP @ 25.1.2006, 09:37 Найти цитируемый пост)

мне кажется тут много чего можно сэкономить?

Ну, конечно. Тебе не придется строить страницу заного, а нужно будет выдать всего лишь статический файл smile
PM WWW   Вверх
IZ@TOP
Дата 30.1.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Wowa, это пройдет в том случае, если на странице нету меняющегося контента (типа голосования и т.п.).


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 30.1.2006, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Если голосование(или какой-то другой скрипт) ты сам делаешь, то в него можно конечно встроить генерацию файла с результами после обновления данных. В нашем случае - добавления голосов. А вот если пользователь чужой скрипт к CMS подключит, то действительно - тут надо подумать...
Может быть имеет смысл захватывать вывод скрипта и его в стат. файл законять.
PM WWW   Вверх
AztEK
Дата 17.2.2006, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



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


А дальше? Интерактивность-то всё равно существенно понизится!
Я сейчас тоже CMS пишу. У меня такая мысль.
Для каждого модуля делать в его конфиге значение, определяющее его степень интерактивности. Скажем, N секунд. Допустим, юзер зашёл на страницу. Output модуля ложим в его кеш-файл. Заходит другой юзер. Смотрим, когда создавался кеш. Если это время + N > текущего времени, то берём данные кеша. Если нет, опять выполняем и кеширеум.

А интерактивность определять, согласно специфике модуля:
"пользователей онлайн", "случайный анеклот", "счетчики" - одно
"мини-чат", "последние темы форума" - другое
"голосования" - третье.

Других путей я и не вижу.


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
S.A.P.
Дата 25.3.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



На чем можно сэкономить:
1. Кеширование запросов к базе (если используется способ хранения MyISAM, то можно держать время последнего изменения для каждой таблицы).
2. Кеширование шаблонов. Будет список модулей, для которых это разрешается (уже отпарсеный HTML будел лежать в файлах).
3. Кеширование на клиенте (выдавать выдавать и принимать в заголовках ETag).
PM MAIL   Вверх
Nobody
Дата 27.3.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: нет
Всего: 16





--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
rMaveric
Дата 9.8.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



В свое время писал клас абстрактной БД, требовалось чтобы приложение работая через этот клас вообще не заботилось о том с какой БД оно работает. Требовалось поддерживать MySQL, PostrigeSQL, XML, XLS и еще пару специфических.

Но теперь к сути: также решил организовать некую систему кеширования.

Идея состояла вот в чем: при обращении к класу по методу select и указанием параметров клас проверял наличие скешированого запроса и отдавал его исключением был запрос с рандомайзеной сортировкой он вновь обращался к БД (но возможно лучше будет и его кешировать, а точнее кешировать результат без сортировки и рандомайзить его). Но при изменении данных (Insert Update) кеш затрагиваемых таблиц просто удалялся, что гарантировало последующее обращение к БД за обновленной информацией.


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


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Opik
Дата 2.9.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



rMaveric, 
Какими методами использовалось кеширование?
Интересно было бы взглянуть на класс.
PM MAIL Skype   Вверх
sergejzr
Дата 8.9.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Как насчёт модулей кэширования? Мы сейчас один используем весьма неплохой. Восможно так-же "глобальные" переменные теперь делать. То есть кэшь в памяти (например, пользователей находящихся на странице не надо заного определять с каждым вызовом, деревья-меню не надо каждый раз собирать, статистику, итд.)
Как аналогию для форума, можно представить кэш сообщений то есть самые просматриваемые будут идти из кэша, остальные из БД.
Мы правда пока только за это взялись, но перспективы неплохие. 


А насчёт кэширования страниц я подумал, что прикольно было бы кэшировать узлы дерева, которые не меняются. Хотя думаю, что с ДОМом будет при этом заморочка. Там легче обьекты напрямую собирать. ХМЛ вообще очень удобно кэшировать. Вопрос только где, в памяти, или базе.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Vingrad CMS | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.