app.yaml:带有static_dir的URL中的通配符?

时间:2014-01-29 22:06:38

标签: google-app-engine go frontend

我在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),指向同一个底层服务器目录。

2 个答案:

答案 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的任何意外请求仍将成功并提供新资源。