Главный принцип кеширования: данные всегда актуальны

В этом выпуске рассказываю, о том, как правильно должно работать кеширование:

Если разработчики вам говорят, что кеш обновляется раз в полчаса и «надо просто подождать», пусть послушают этот выпуск. Кеш — не оправдание для отображения устаревших данных. Кеш нужен, чтобы данные показывались быстро, но без ущерба для их актуальности. Если из-за кеша вы видите устаревшие данные, значит в кеше баг.

Подкаст-версия для тех, кто в дороге:

Тема начинается с 2:01 с рассказа о смысле кеширования, сам принцип — c 7:00

РСС для подкастных программ:

https://ilyabirman.ru/meanwhile/tags/podcast/rss/

И теперь можно найти подкаст в каталоге Айтюнса. Надо искать «Видеоблог-подкаст Ильи Бирмана», но в нормальных программах находит даже если просто написать «Бирман».

Дальше
6 комментариев
Alexander Golubev 2020

There are only two hard things in Computer Science: cache invalidation and naming things.
— Phil Karlton

Это, конечно, шутка, но только не очень. Инвалидация кеша — одна из самых сложных задач программирования.
Принцип «данные всегда актуальны», очевидно, правильный, но не во всех случаях главный. Иногда есть выбор: либо на 5 минут устаревшая страница, либо никакой страницы, и тогда главным приципом становиться «чтобы работало»

Mikhail Gusarov 2020

Главный принцип кэширования: кэш изменяет скорость программы, но не её поведение.

Если кэш меняет поведение программы, то либо это означает, что есть ошибка, которую надо исправить, либо стоит перестать называть эту конструкцию кэшем.

Евгений Степанищев 2020

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

Павел Супрунюк 2020

Коммент к догонке. Платный Ютуб не во всех странах позволяет проигрывать видео (аудио) в фоне. В Беларуси он только отключает рекламу, но ни фонового воспроизведения, ни офлайн воспроизведения нет, о чем он предупреждает почти при каждом запуске приложения (что бесит еще сильнее). https://support.google.com/youtube/answer/6307365?hl=en

Mihail Podivilov 2020

Даже у таких платформ-гигантов, как тот же Фейсбук, инвалидация кэша работает не совсем корректно. Например, данные Opengraph могут висеть необновлёнными даже при запросе на инвалидацию где-то от одного дня.

Илья Бирман 2020

У Фейсбука всё работает запредельно глючно. Мне кажется, тут слово «даже» неуместно :-)

zonk 2020

САР-теорема как раз о том, что на выбор есть только два варианта: не показывать пользователю ничего, или показывать устаревшие данные. Вариант «показывать свежее» — иллюзия, исчезающая с увеличением размера системы.

Мои книги