2012-03-20 4 views
7

У меня очень специфическая ситуация с кешем. Мы используем несколько решений для кэширования, и я задаюсь вопросом, что является лучшим решением для аннулирования кеша при действии пользователя.Как я могу сделать неверный кеш правильным?

Кэш как так

  • Первый слой: CDN кэширует полную страницу в формате HTML для неавторизованных пользователей

  • Второй слой: полный кэш страниц в Memcached для неавторизованных пользователей причина, по которой у меня есть второй уровень, - реагировать на края, иногда не все кешированные кешируют, поэтому я также хочу «ответить» на край из кеша.

  • Третий слой: частичные части кеша HTML и данные базы данных для зарегистрированных пользователей.

Моя проблема заключается в том, что мой процесс недействительности во многом базируется на третьем слое прямо сейчас, и я не отвечаю на второй и первый слой достаточно хорошо.

Мой вопрос: что является лучшим способом сделать недействительным кеш на полный URL-адрес из ключа кеша, который абсолютно не связан с URL-адресом? Например, если у меня есть план поездки, внутри плана поездки есть комментарии, я хочу аннулировать URL-адрес плана полной страницы, когда пользователь комментирует новый комментарий.

В модели комментариев нет URL-адреса, а у «родителя» также нет URL-адреса, тот же комментарий также будет отображаться на странице города, поэтому он полностью может использоваться повторно и частично.

ответ

3

Я прочитал некоторые блог-постеры Дэвида Хайннемайера Хансона по 37-значным номерам blog.

Их проблема заключается в том, чтобы кэшировать все объекты на странице, а затем использовать CSS и JS для настройки представления.

  • В first post DHH использует технологию, которую они использовали, чтобы сделать новый интерфейс для Basecamp настолько быстрым.
  • В second post он рассказывает, как работает срок действия ключа.

Это может не решить ваши проблемы, но с описанием, которое вы дали, я думаю, что он может по крайней мере дать вам несколько советов.

+2

Это на самом деле очень хорошее решение и изменило мой подход к кешированию. Если парень, который начал эту тему, еще не прочитал эти сообщения, он должен это сделать. Это похоже на то, что ему нужно (аннулировать целую страницу, если что-то внутри изменяется). –

Смежные вопросы