在 Google App Engine 上重命名 index.html

在 Google App Engine 上重命名 index.html

好的,首先让我坦白。我错误地将 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作为默认文件?

答案1

编辑答案:

您无法在 App Engine 上重命名 index.html 的问题是由于缓存文件以及您的 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

相关内容