Термін дії випадкового кешу


13

Я експериментував із випадковим терміном закінчення терміну дії кешу, щоб уникнути ситуацій, коли індивідуальний запит примушує оновлювати кілька речей відразу. Наприклад, веб-сторінка може містити п'ять різних компонентів. Якщо для кожного встановлено тайм-аут протягом 30 хвилин, користувач матиме тривалий час очікування кожні 30 хвилин. Тому замість цього ви встановлюєте їх довільним часом від 15 до 45 хвилин, щоб, мабуть, максимум лише один компонент перезавантажиться для будь-якого завантаження сторінки.

Я намагаюся знайти будь-яке дослідження або вказівки з цієї теми, наприклад оптимальні параметри дисперсії. Я пам'ятаю, як бачив одну статтю про те, як Google (?) Використовує цю техніку, але не може її знайти, і, здається, не так багато написано про цю тему.


Чи можете ви переформулювати це як питання? Не ясно, чого ви очікуєте на відповідь.
Дерек

Гаразд, це зроблено.
mahemoff

Відповіді:


4

3
Дякую за ці посилання, але жодне з них не згадує випадковості.
mahemoff

2
Я знаю, скільки років цьому питанню, але Меттью Ніл з EstarOnline Limited зробив саме це (PDF): estaronline.com/images/assetimages/…
Нік Бедфорд,

@NickBedford Це відповідь, яку я шукав. Ваш коментар повинен бути прийнятою відповіддю.
WhiteHotLoveTiger

0

Повертаючись до відповіді на моє власне питання, головна проблема тут полягає в тому, як уникнути того, що все завжди закінчується одночасно. Якщо це дозволено, система сповільниться та стане перевантаженою під час повторного заповнення кешу.

Здебільшого це насправді не є проблемою на практиці. З часом всі компоненти мають тенденцію до дрейфу в залежності від часу, який закінчується. Якщо декілька компонентів переробляються одночасно, це кодовий запах, оскільки вони, ймовірно, повинні кешуватися разом як єдиний компонент (наприклад, якщо ви мали унікальний кеш сторінки, тіла та нижнього колонтитулу сторінки, кешовані окремо, можливо, ви можете просто кешуйте саму сторінку).

Звичайно, є випадки, коли багато речей потрібно кешувати за один раз, наприклад, після запуску системи, якщо ми очистили весь кеш або повернули кеш-клавіші. У цьому випадку це не так вже й погано, оскільки компоненти швидко заповнюються, а термін дії згодом розпливеться.

Наскільки це проблема, є кілька рішень:

  • Просто виберіть тривалість закінчення терміну дії кешу в межах діапазону замість фіксованої тривалості, наприклад, випадкове ціле число від 15 до 90 хвилин замість 60 хвилин.
  • Дозволити несвіжі відповіді. Тільки тому, що термін дії кешу минув, не означає, що ви не можете його використовувати, якщо він все ще є. Залежно від потреб бізнесу, може бути прийнятним використовувати його, якщо після закінчення терміну дії буде випущено оригінальну версію. У HTTP це мета "must revalidate" (якщо це правда, це означає не використовувати кешовану версію після закінчення терміну дії).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.