Google Cloud CDN начал игнорировать строки запросов для хранилищ - PullRequest
0 голосов
/ 21 марта 2019

Несколько месяцев назад активировал Cloud CDN для хранилищ. Наше хранилище данных регулярно изменяется через бэкэнд. Поэтому, чтобы сделать недействительной кэшированную версию, мы добавили параметр запроса с changedDate в URL, который подается клиенту.

Тогда это работало хорошо.

Когда-то в последние месяцы (возможно, недели) Google, казалось, изменил это и теперь игнорирует строку запроса для кэширования из сегментов памяти.

  • Первая часть: кто-нибудь знает, почему это изменилось и почему никто не был уведомили об этом?
  • Вторая часть: как вы можете аннулировать кэш для определенного объекта в хранилище без отправки запроса на кеширование (что не стоит) каждый раз?

Мне не нравится идея удаления старого файла и загрузки нового файла с измененным именем файла каждый раз, когда что-то загружается ...

EDIT: для пояснения: официальный документ (cloud.google.com/cdn/docs/caching) уже заявляет, что теперь они игнорируют строки запроса для сегментов памяти:

Для внутренних блоков ключ кэша состоит из URI без строки запроса>. Таким образом, https://example.com/images/cat.jpg, https://example.com/images/cat.jpg?user=user1, и https://example.com/images/cat.jpg?user=user2 эквивалентны.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

На нас это тоже повлияло. Обратившись в службу поддержки Google, они подтвердили, что это постоянное изменение. Рекомендуемый обходной путь - использовать версионирование в имени объекта или использовать аннулирование кэша. Последнее звучит немного странно, так как кэш-память документация гласит:

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

0 голосов
/ 27 марта 2019

Для внутренних блоков ключ кэша состоит из URI без строки запроса, как указано в официальной документации. 1 Область не оценивает строку запроса, но CDN все равно должен это делать. Я мог бы воспроизвести этот же сценарий, и в настоящее время все еще можно использовать строку запроса в качестве средства разгона кэша.

Похоже, что причина изменения в том, что старое поведение привело к потере возможностей кэширования, более высоким затратам и большей задержке. Единственный рекомендуемый обходной путь на данный момент - это создание новых объектов путем включения версии в имя объекта (что, по-видимому, является недопустимым вариантом для вашего случая) или использование аннулирования кэша.

При аннулировании кэша для определенного объекта потребуется использовать определенный запрос. Возможно, ваш обходной путь - заголовок Cache-Control, позволяющий кэшировать такие объекты в течение определенного времени. Облачный кэш CDN имеет время истечения, определяемое заголовками «Cache-Control: s-maxage», «Cache-Control: max-age» и / или Expires 2 .


...