我在app.yaml中将正则表达式作为目录名匹配的尝试不起作用:
- url: /v1_.*
static_dir: static/v1
expiration: "364d"
虽然this official spec表示支持正则表达式语法。有没有办法使这项工作?
即。 /v1_2014-01-29/img/logo.png
应与静态文件/static/v1/img/logo.png
匹配。
我使用Google App Engine来提供Go网络应用。
我希望最大限度地提高浏览器缓存的使用寿命,最大限度地减少请求数量并仍然提供我的css / js / png的新版本,我相信revving filenames是实现这一目标的最佳做法。另外,添加变量查询字符串(/v1/img/logo.png?2014-01-29
)可能会导致代理和缓存问题,我更喜欢显示一个变量目录名称(/v1_2014-01-29/img/logo.png
),指向同一个底层服务器目录。
答案 0 :(得分:2)
在我看来,URL的任何超出url定义匹配的部分(从开头匹配)都附加到static_dir。
因此,如果文件路径为/v1_2014-01-29/img/logo.png
(使用Python尝试),则以下处理程序应匹配static/v1/img/logo.png
:
- url: /v1_(\d+-?)+
static_dir: static/v1
答案 1 :(得分:0)
在olivierdm的回答之后,我将我的yaml改为:
- url: /v1_.*_
static_dir: static/v1
expiration: "364d"
和我的html模板生成/v1_2014-01-29_/img/logo.png
。
基本上,额外的任意字符下划线_
强制.*
匹配2014-01-29
,而不是空字符串。
现在,每当我希望访问者重新加载静态文件时,我只是更改了诱惑中的日期(我不再触摸app.yaml)。此外,对“过时”URL的任何意外请求仍将成功并提供新资源。