2013-09-09 5 views
0

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

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

+0

Зачем вам нужен устаревший кэш? – djot

+0

@djot, я не понимаю. –

+0

И я не понимаю, почему вы хотите кэшировать старые/устаревшие данные. – djot

ответ

1

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

Как я понимаю, у вас есть 3 варианта:

  1. об изменении - когда ваша запись получает редактируемую, а также удалить существующую информацию кэша (также убедиться, что он получает воссоздан по запросу)
  2. периодически - есть хрон, который работает только время 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, при выборе идеальный процент, основанный на трафике, полученном приложением, и результатах теста.

И, чтобы закончить ответ на позитивной ноте, здесь очень хорошая цитата из Leon Bambrick

Есть 2 жестких проблем в области информатики: кэш недействительности, называя вещи, и выключаться на 1 ошибки.