Назад | Перейти на главную страницу

Переименование index.html в Google App Engine

Хорошо, позволь мне 1-го откликнуться. Я по ошибке добавил срок годности 365 дней в свой index.html файл. Теперь я внес изменения в файл JS, который изменил имя импорта в моем index.html и теперь он пытается импортировать не тот файл. Ой.

Итак, я думаю, давайте изменим имя файла по умолчанию на другое имя, которое не кэшируется.

Что у меня есть сейчас

В моем проекте Angular я изменил все настройки здания, поэтому теперь мой index.html файл назван main.html. Даже сам файл называется main.html, и проверяя мою папку dist, нет index.html только main.html.

Я разместил сайт на Google App Engine, и эту команду я использовал для развертывания после сборки.

gcloud app deploy app.yaml --quiet --project=<project-name>

Вот мой app.yaml

api_version: 1

env: standard
runtime: python27
service: <service-name>
threadsafe: yes

automatic_scaling:
  min_idle_instances: 1

handlers:

- url: /(.*\.(css|eot|gz|ico|js|map|png|jpg|jpeg|svg|ttf|woff|woff2|pdf|gif))
  static_files: dist/browser/\1
  upload: dist/browser/(.*\.(css|eot|gz|ico|js|map|png|jpg|jpeg|svg|ttf|woff|woff2|pdf|gif))
  expiration: "365d"

- url: /.*
  static_files: dist/browser/main.html
  upload: dist/browser/main.html
  secure: always
  expiration: "0s"

skip_files:
 ## bunch of files

Проблема:

Похоже, Google все еще обслуживает index.html, хотя, честно говоря, я не совсем уверен, как это проверить. Как сказать, чтобы обслужить main.html как файл по умолчанию?

Отредактированный ответ:

Проблема с тем, что вы не можете переименовать index.html в App Engine, связана с кешированными файлами и неправильным файлом app.yaml.

  • Простой способ избежать проблемы с кешируемым файлом - изменить имя файла, поскольку новое имя файла нигде не кэшируется, пока оно не будет запрошено.

У вас есть несколько вариантов:

1- Используйте новое имя файла

2- Используйте заголовок Etag

3- Добавить параметр строки запроса в запрос на получение на сервер. (Сделайте запрос к /main.html?timestamp=currenttimestamp, параметр нужно изменить, иначе он тоже будет кэширован)

  • Если вы сделаете запрос к своему приложению на dist / browser / main.html, он никогда не попадет ко второму обработчику, он всегда остановится на первом, потому что он соответствует шаблону, обработчики идут сверху вниз.

Если вы хотите, чтобы dist / browser / main.html всегда был одним файлом, тогда файл app.yaml должен быть:

api_version: 1

env: standard
runtime: python27
service: <service-name>
threadsafe: yes

automatic_scaling:
  min_idle_instances: 1

handlers:
- url: /dist/browser/main.html
  static_files: dist/browser/main.html
  upload: dist/browser/main.html
  secure: always
  expiration: "0s"
- url: /(.*\.(css|eot|gz|html|ico|js|map|png|jpg|jpeg|svg|ttf|woff|woff2|pdf|gif))
  static_files: dist/browser/\1
  upload: dist/browser/(.*\.(css|eot|gz|html|ico|js|map|png|jpg|jpeg|svg|ttf|woff|woff2|pdf|gif))
  expiration: "365d"


skip_files:
 ## bunch of files