好的,首先让我坦白。我错误地将 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