Изменение в статический файл не происходит сразу после развертывания - PullRequest
0 голосов
/ 24 октября 2018

Когда я изменяю статический файл (здесь page.html), а затем запускаю appcfg.py update, даже после успешного развертывания, и он говорит, что новые файлы служат, если я curl для файла, изменение фактически не имеет

Соответствующая выдержка из моего app.yaml:

default_expiration: "10d"

- url: /
  static_files: static/page.html
  upload: static/page.html
  secure: always

Документы Google говорят "Истечение срока действия статического кэша - если не указано иное, веб-прокси и браузеры сохраняют файлы, которые они загружаютвеб-сайт в течение ограниченного периода времени. " Не должно быть никакого кэша браузера, поскольку я использую curl, чтобы получить файл, и у меня по крайней мере не настроен прокси-сервер дома.

Возможные намеки на ответ

Интересно, что если я свернусь для /static/page.html напрямую, он обновится, но если я сверну для /, который должен указывать на тот же файл, он не имеет.

Также, если я добавлю несколько фиктивных аргументов GET, таких как /?foo, я также смогу увидеть обновленную версию.Я также попытался добавить опцию -H "Cache-Control: no-cache" в свою команду curl, но все еще получил устаревшую версию.

Как мне увидеть обновления до / сразу после развертывания?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Как указывает Omair , в документах для стандартной среды Pyhton указывается, что "файлы, вероятно, будут кэшироваться браузером пользователя, а также промежуточным кэширующим прокси.серверы, такие как интернет-провайдеры ".Но я нашел способ сбросить статические файлы, кэшированные вашим приложением, в Google Cloud.

Перейдите в Консоль Google Cloud и откройте свой проект.В левом меню гамбургера перейдите в «Хранилище» -> «Браузер».Там вы должны найти хотя бы один Bucket: your-project-name.appspot.com.В столбце «Жизненный цикл» нажмите на ссылку с именем your-project-name.appspot.com.Удалите все существующие правила, поскольку они могут конфликтовать с тем, которое вы создадите сейчас.

Создайте новое правило, нажав кнопку «Добавить правило».Для условий объекта выберите only параметр «Более новая версия» и установите для него значение 1. Не забудьте нажать кнопку «Продолжить».Для действия выберите «Удалить» и нажмите кнопку «Продолжить».Сохраните ваше новое правило.

Это новое правило вступит в силу до 24 часов, но по крайней мере для моего проекта это заняло всего несколько минут.Как только он будет запущен, версия файлов, обслуживаемых вашим приложением под your-project-name.appspot.com , всегда будет последней развернутой , что решит проблему.Кроме того, если вы регулярно редактируете свои статические файлы, вам следует удалить любой элемент expiration из обработчиков, связанных с этими статическими файлами, и элемент default_expiration из файла app.yaml, что поможет избежать непреднамеренного кэширования другими серверами.

0 голосов
/ 26 октября 2018

Согласно документации App Engine по сроку действия статического кэша , это может быть связано с тем, что серверы кэширования между вами и вашим приложением соблюдают заголовки кэширования в ответах:

Истечение срока действиявремя будет отправлено в заголовках ответа HTTP Cache-Control и Expires, и, следовательно, файлы, вероятно, будут кэшироваться браузером пользователя , а также промежуточными прокси-серверами кэширования, такими как интернет-провайдеры .

Как только файл передается с заданным временем истечения срока действия кеша, как правило, нет способа очистить его от промежуточных кешей, даже если вы очищаете кеш браузера или используете команду Curl с опцией no-cache,Повторное развертывание новой версии приложения также не приведет к сбросу кэшей.

Для файлов, которые необходимо изменить, рекомендуется более короткое время истечения.

...