Я экспериментировал со случайным временем истечения срока действия кэша, чтобы избежать ситуаций, когда отдельный запрос заставляет несколько вещей обновляться одновременно. Например, веб-страница может содержать пять различных компонентов. Если для каждого из них задано время ожидания в 30 минут, пользователь будет долго ждать каждые 30 минут. Таким образом, вместо этого вы устанавливаете их на произвольное время между 15 и 45 минутами, чтобы обеспечить максимальную загрузку только одного компонента для любой данной загрузки страницы.
Я пытаюсь найти какие-либо исследования или рекомендации по этой теме, например, оптимальные параметры дисперсии. Я помню, как видел одну статью о том, как Google (?) Использует эту технику, но не может ее найти, и, похоже, об этой теме написано мало.
источник
Ответы:
Некоторые документы:
источник
Возвращаясь, чтобы ответить на мой собственный вопрос, главная проблема здесь состоит в том, как избежать всего, что истекает в одно и то же время. Если это разрешено, система замедлится и станет перегруженной, пока она переполняет кэш.
В большинстве случаев это не проблема на практике. Со временем все компоненты имеют тенденцию дрейфовать с точки зрения времени их истечения. Если несколько компонентов перестраиваются одновременно, это - запах кода, потому что они, вероятно, должны быть кэшированы вместе как один компонент (например, если у вас были кеширован уникальный заголовок страницы, тело и нижний колонтитул отдельно, возможно, вы можете просто кешируй саму страницу).
Конечно, бывают случаи, когда многие вещи необходимо кэшировать одновременно, например, после запуска системы, если мы очистили весь кеш или повернули ключи кеша. В этом случае, как правило, это не так плохо, потому что компоненты быстро заполняются, и истечения срока действия впоследствии будут расходиться.
Если это проблема, есть несколько решений:
источник