index.html
。我使用基于Webpack哈希的缓存破坏技术,因此我希望始终防止index.html
的缓存,但不影响任何其他文件。但我发现实现这一点非常困难。具体而言,我的文件布局如下:/
├── index.html
├── login.html
├── js
│ ├── login.ba22ef2579d744b26c65.bundle.js
│ └── main.6d0ef60e45ae7a11063c.bundle.js
└── public
└── favicon-16x16.ico
在阅读文档中的一句话之前,我天真地使用了"sources": "index.html"
。
每个定义都必须有一个源键与原始请求路径匹配,而不考虑使用glob符号的任何重写规则。
好吧,所以我需要在路径上设置一个glob,而不是简单指定我想要这些头文件的文件。由于大多数路径都重定向到index.html,因此我需要一个排除我不想放置这些标头的所有路径的glob。
供参考,我的firebase.json
托管部分如下:
{
"hosting": {
"public": "dist",
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"cleanUrls": true,
"trailingSlash": false,
"headers": [
{
"source": <<<WHAT-GOES-HERE?>>>,
"headers": [
{
"key": "Cache-Control",
"value": "no-cache, no-store, must-revalidate"
},
{
"key": "Pragma",
"value": "no-cache"
},
{
"key": "Expires",
"value": "0"
}
]
}
]
}
}
因此,为了举例说明应该不缓存并重定向到index.html的内容:
mysite.com
mysite.com/
mysite.com/foo/bar/baz
mysite.com/index.html
< p > < em > 注意:如果最后一个被缓存,我也可以生存,因为它在实践中并不会被使用。
< p > 不应重定向到index.html且不应缓存的内容 **/*.* (ideally excluding index.html)
mysite.com/login
我自己尝试的最接近的是**/!(login|*.*)
,它可以匹配上面列出的几乎所有内容,但不知何故无法匹配mysite.com
或mysite.com/
。这两个页面没有与此通配符匹配,我无法弄清楚为什么。
/index.html
添加一个规则吗? - Michael Bleigh