Cashe aside — Вікіпедія
Ця стаття не має інтервікі-посилань. |
Cashe aside — шаблон проєктування для оптимізації використання кешу.
Проблема[ред. | ред. код]
Аплікація застосовує кеш для оптимізації повторного доступу до даних. Однак дані час від часу оновлюються. Необхідно забезпечити спосіб підтримувати максимально актуальні дані в кеші.
Вирішення[ред. | ред. код]
Поміщаємо дані в кеш на вимогу. Протягом певного періоду часу очищаємо кеш.
Переваги та недоліки[ред. | ред. код]
Переваги[ред. | ред. код]
- забезпечує часткову консистенцію даних при оптимізованому доступі
- забезпечує непередбачувану потребу в ресурсах. Дані поміщаються в кеш на вимогу
- система може працювати при несправності кешу. В такому випадку дані беруться зі сховища
Недоліки[ред. | ред. код]
- не забезпечує повну консистенцію даних. Дані можуть бути оновлені, стороннім сервісом в той час як кеш міститиме застарілу інформацію
- не забезпечує збереження статичних даних. Кеш постійно очищається
Опис[ред. | ред. код]
- Читаємо дані з кешу.
- Якщо даних немає в кеші, читаємо їх зі сховища.
- Поміщаємо прочитані дані в кеш.
- Очищаємо дані із кешу за певний період часу.
public Data GetData() { LoadDataFromDatabaseIfNeed(); return _cache.GetData(); } private void LoadDataFromDatabaseIfNeed() { if (!_cashe.HasRequiredData()) { var data = _database.GetData(); _cache.SaveData(data, expire: TimeSpan.FromMinutes(5)); } }
Див. також[ред. | ред. код]
Джерела[ред. | ред. код]
- Caching strategies and how to choose the right one [Архівовано 21 червня 2020 у Wayback Machine.]