Когда должна произойти аннулирование кэша?

Там есть запись базы данных. Эта запись имеет веб-страницу. Эта веб-страница кэшируется. В какой-то момент запись может обновиться и кеш (веб-страницы) - больше не нужен.

Должна ли система немедленно сообщать кешу, что он больше не нужен, или это должно произойти, когда (и только если) запрашивается кэшированная веб-страница, предотвращая потенциально ненужное удаление?

1 ответ

Это зависит от ваших конкретных требований.

На мой взгляд, у вас есть 3 варианта:

  1. при изменении - когда ваша запись редактируется, также удалите существующую информацию о кеше (также убедитесь, что она создается заново по запросу)
  2. периодически - иметь задание cron, которое запускается один раз X, и заново делать весь кеш
  3. в процентах (не знаю, как это назвать) - когда запрашивается запись, сделайте что-то вроде этого:

(в основном приведенный ниже код означает один раз в 1000 запросов, кэш для запрашиваемой страницы очищается)

if (rand(1, 1000) == 666) {
    /** clear the cache for current requested page */
}
/** handle request */

В зависимости от вашего трафика и объема кешируемой вами информации (возможно, и других факторов) может быть полезен любой.

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

#1 было бы идеально, но имеет очень большой недостаток - иногда вы не сможете отследить определенные изменения. Например, вы не можете точно сказать, когда файл шаблона изменяется, чтобы повторно кэшировать его.

Это зависит от вас, чтобы определить ваши точные потребности, объем трафика, который вы получаете / ожидаете, объем кеша, который у вас будет, и есть довольно много инструментов для выполнения этих тестов (например, Apache Benchmark).

PS: Скорее всего, вам понадобится комбинация этих

Пример:

В приложении с огромным кешем, который часто меняется, я бы #1 + #3при выборе идеального процента на основе трафика, который получает приложение, и результатов тестирования.

И, чтобы закончить ответ на положительной ноте, вот очень хорошая цитата от Леона Бамбрика

В компьютерной науке есть две серьезные проблемы: аннулирование кэша, присвоение имен и ошибки off-by-1.

Другие вопросы по тегам