Я использую google CDN с балансировщиком нагрузки google, у которого есть несколько серверных служб, и каждая из них имеет разные настройки для google CDN, как показано ниже.
service A: google CDN disabled (API server)
service B: google CDN enabled, 1day (Cache-Control: public, max-age=86400), cache-key: full URL
service C: google CDN enabled, 1year (Cache-Control: public, max-age=31536000), cache-key: full URL
Проблема в том, что сервис C
получил запрос от балансировщика нагрузки Google, URL которого уже был запрошен вчера и обработан корректно. (статус 200, с заголовком Cache-Control и Content-Length
)
Это происходит не всегда, например, сразу после возврата ответа с нашего сервера балансировщик нагрузки Google возвращает ответ без запроса. но прошло около суток, опять начинают спрашивать. обратите внимание, что я сделал запрос почти в том же географическом месте.
После некоторого googlng я уже нашел следующую ссылку на SO, в которой говорится, что Google CDN агрессивно вытесняет его содержимое (всего говорится, что размер кеша составляет всего 10 МБ), https://stackoverflow.com/a/54031267/1982282
И Google CDN не гарантирует соблюдение максимального возраста. Google Cloud CDN игнорирует максимальный возраст более 3600
Но причина вышеуказанных проблем действительно в этом агрессивном выселении?
На самом деле, наш сервер все еще находится в стадии разработки, поэтому не имеет большого объема трафика, а общий размер кеша составляет всего ~ 10 МБ или около того. но, по моему личному ощущению, я не могу поверить, что Google CDN удаляет содержимое так жестко (в течение 1 дня, размером более 10 МБ).
Может ли кто-нибудь поделиться своим опытом о частоте выселения Google CDN?
С уважением,
1 ответ
Вкратце, на содержимое кэша CDN и, следовательно, на попадание в кэш влияют несколько независимых факторов, в частности удаление содержимого из кэша, истечение срока действия контента, интенсивность и размер пользовательских запросов. Кроме того, Cloud CDN может инициировать другие запросы в рамках алгоритма кэширования: например, запросы проверки и запросы диапазона байтов.
Следовательно, вы не должны ожидать, что запросы к исходным серверам остановятся, настроив один параметр, например max-age
.
Как упоминается в документации Google Cloud CDN,
Чтобы содержимое обслуживалось из кеша, оно должно быть вставлено в кеш, не должно быть вытеснено и срок его действия не должен истечь.
Исключенный контент может быть просрочен, а может и не быть. Установка срока действия не влияет на выселение.
По мере того, как кэши получают больше трафика, они также удаляют больше кэшированного контента.
Из-за природы кешей невозможно предсказать, будет ли конкретный запрос обслуживаться из кеша.
Говорить о каком-либо «агрессивном выселении» содержимого кэша было бы некорректно. Кэш Cloud CDN ведет себя именно так, как должен. Это поведение четко описано здесь:
Google Cloud CDN: сведения о кэшировании
Эта документация также объясняет две другие «проблемы», упомянутые здесь в отношении вопроса.
Похожие вопросы
Связанные вопросы
Новые вопросы
google-cloud-cdn
Этот тег следует использовать для вопросов, касающихся Google Cloud CDN, являющейся частью Google Cloud Platform.