![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Доброго времени суток!!!
Есть проблема. Допусти у нас выводится список топиков. Эти топики связаны с другими объектами (пользователи, их автары, блоги и т.д.) Если мы выберем скажем 50 топиков одним запросом с кучей джоинов и закешируем его, то, например, когда у нас изменится аватар одного из пользователей, то нам прийедтся сбрасывать кеш для ВСЕХ подобных пачек с топиками. Вопрос как этого избежать? Как построить кеширование, чтобы при изменении аватара - сбрасывался кеш только топиков этого автора? Я предлагал такое решение: сначала выбираются айдишники этих объектов, а потом в соответствии с этим списком выбираются объекты поштучно. Т.е. 50+1 запрос. Если выбирать только ID, то наверное можно добиться их поиска только по индексу (covering), хотя это сложно тоже достаточно... А как ВЫ решаете эту проблему? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
>как организуется кеш?
Ну я уже много способов перепробовал, вы расскажите лучше как по вашему нужно его организовывать? >в течене какого времени он живет - на время формирования одной страницы или ограниченное время? Никакого. Кеш вечен. Кеш должен сбрасываться при изменении объекта только, либо пачки объектов. Я вот кроме как способа с кешированием отдельных объектов ничего придумать не могу. Т.е. Кеш пачки (с айдишниками объектов)+ много кешей каждого из объектов. Но это не кошерно как-то 100 запросов в мемкеш на 100 комментов, поэтому и спрашиваю вас. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
о, значит, memcache. в таком случае(теоретическое предположение - с memcache я не работал), можно использовать механизм тегов. и всему, что кешируется для объекта "пользователь #100" задавать соответствующий тег. И при изменении информации сбрасывать кеш только для элементов с соответствующим тегом. |
|||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Мда уж... Если вы внимательно прочтитаете мой вопрос, то поймете какую глупость написали... (извините за резкость)
Теги не обязательно для мемкеша только. Их можно сделать и для файлов и APC и чего хочешь. Это лишь отдельные key-value пары с информацией. Здесь вопрос совсем в другом. Чтобы сбросить пачку комментов для данного топика нам надо сделать к нему 100 тегов всех юзеров, 100 тегов всех аватаров и т.д. Ну поняли? Чтоб не сбрасывать кеш для комментов ВСЕХ топиков,а тольк для топиков, у которых комменты добавил данный юзер, изменивший аватар. А в реальных проектах таких связей ОЧЕНЬ много (здесь только для примера комменты) Добавлено через 5 минут и 26 секунд Надеюсь почему 200 тегов к одному кешу - зло - вам понятно. Это сообщение отредактировал(а) qsajeal - 6.7.2009, 13:49 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |