Подойдет ли кеширование для этого сценария? - PullRequest
0 голосов
/ 16 августа 2010

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

Пожалуйста, имейте это в виду, поскольку, к счастью, я не совсем понимаю, кеширование!

  • Итак, первый пользователь загружает страницу предоставленного пользователем контента.Требуется 0,8 секунды (обработка), чтобы загрузить его «медленно».Затем следующий пользователь загружает ту же страницу, для ее «быстрой» загрузки из кэша требуется 0,1 секунды.

  • Третий пользователь загружает ее, также занимая 0,1 секунды времени выполнения.Этот пользователь решает прокомментировать страницу.

  • Четвертый пользователь загружает ее через 2 минуты, но не видит комментарий третьего пользователя, поскольку до кэширования осталось еще 50 минутистекает

Что вы делаете в этой ситуации?Стоит ли включать кэширование на таких страницах?

Причина, по которой я хотел бы использовать кэширование, заключается в том, что я провел несколько тестов. Без кэширования моя страница в среднем занимала 0,7864 секунды. При кэшировании это заняло в среднем 0,0138 секунды. Это улучшение на 5599%!

Я понимаю, что это всего лишь вопрос миллисекунд, но даже в этом случае ...

Джек

Ответы [ 3 ]

6 голосов
/ 16 августа 2010

Вы хотите лучший кеш.

Как правило, вы никогда не должны достигать таймаута кеша. Вместо этого некоторое пользовательское действие сделает недействительным кеш.

Итак, если у вас есть такой сценарий:

  1. Джо загружает страницу впервые (когда-либо). Кеша нет, поэтому требуется некоторое время, но результат кешируется по пути.
  2. Мэри загружает страницу, и она быстро загружается из кэша.
  3. Мэри добавляет комментарий. Комментарий добавляется в базу данных (или что-то еще), и программное обеспечение делает кэш недействительным
  4. Пит приходит и загружает страницу, кеш недействителен, поэтому для отображения страницы требуется секунда, а результат кэшируется (как допустимая запись в кеше)
  5. Сэм приходит, страница загружается быстро
  6. Приходит Дженни, страница загружается быстро.

Я не парень CodeIgniter, поэтому я не уверен, что этот фреймворк сделает для вас, но вышеизложенное, как правило, должно произойти. Ваше приложение должно иметь достаточно встроенных смартов, чтобы сделать записи кэша недействительными при записи данных, которые требуют аннулирования кэша.

1 голос
/ 17 августа 2010

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

0 голосов
/ 16 августа 2010

Хотя CI предлагает только кэширование на уровне страницы, без аннулирования я использовал эту проблему несколько иначе. Простейшим способом решения этой проблемы было загрузить весь тяжелый контент из кэша, а комментарии загружались с помощью Ajax-вызовов без кэширования.

Или вы можете посмотреть пользовательские плагины, которые решают эту проблему, например, тот, который вы указали ранее.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...