Как установлено shoresh , документы для стандартной среды Pyhton утверждают, что оба параметра срок действия статического кэша , отдельный элемент expiration
и элемент верхнего уровня default_expiration
, отвечает за определение «времени истечения [того], которое будет отправлено в заголовках ответа HTTP Cache-Control
и Expires
». Это означает, что «файлы, вероятно, будут кэшироваться браузером пользователя, а также промежуточными прокси-серверами, такими как интернет-провайдеры».
Проблема здесь в том, что «повторное развертывание новой версии приложения не сбрасывает все кэши». Поэтому, если установить default_expiration
, например, на 15 дней, но внести изменения в файл CSS или JS и повторно развернуть приложение, нет гарантии, что эти файлы будут автоматически обслуживаться из-за активных кэшей, особенно из-за для промежуточного кэширования прокси-серверов, которые могут включать в себя серверы Google Cloud - что, по-видимому, имеет место, так как доступ к your-project-name.appspot.com также обслуживает устаревшие файлы.
В той же документации, ссылка на которую приведена выше, указано, что «если вы когда-либо планируете изменить статический файл, он должен иметь короткий (менее одного часа) срок действия. В большинстве случаев подходит 10-минутное время истечения по умолчанию». Это то, что нужно подумать о до того, как установит срок действия статического кэша. Но для тех, кто, как и я, не знал всего этого заранее и уже был пойман этой проблемой, я нашел решение.
Несмотря на то, что в документации указано, что очистить промежуточные прокси-серверы невозможно, можно удалить хотя бы кеш Google Cloud.
Чтобы сделать это , перейдите в Облачная консоль Google и откройте свой проект. В левом меню гамбургера перейдите в «Хранилище» -> «Браузер». Там вы должны найти хотя бы один Bucket: your-project-name.appspot.com. В столбце «Жизненный цикл» нажмите на ссылку с именем your-project-name.appspot.com. Удалите все существующие правила, поскольку они могут конфликтовать с тем, которое вы создадите сейчас.
Создайте новое правило, нажав кнопку «Добавить правило». Для условий объекта выберите only параметр 'Newer version' и установите для него значение 1. Не забудьте нажать кнопку "Continue". Для действия выберите «Удалить» и нажмите кнопку «Продолжить». Сохраните ваше новое правило.
Это новое правило вступит в силу до 24 часов, но по крайней мере для моего проекта это заняло всего несколько минут. После того, как он запущен и работает, версия файлов, обслуживаемых вашим приложением под your-project-name.appspot.com , всегда будет последней развернутой , что решит проблему. Кроме того, если вы регулярно редактируете свои статические файлы, вам следует удалить элемент default_expiration
из файла app.yaml, что поможет избежать непреднамеренного кэширования другими серверами.