我试图更好地理解app.yaml。
GCP文档建议为您的图片创建一个处理程序,如下所示:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: \1
upload: .+\.(gif|png|jpg)$
application_readable: true
但是我使用的更简单:
- url: /assets/images
static_dir: assets/images
我想了解Google使用的额外参数和正则表达式。
Google与我的处理程序有什么区别?
我的处理程序工作时PS,但是当我使用Google处理程序时,我的图像无法加载。
答案 0 :(得分:2)
说明位于Handlers element表的static_files
行:
<强> static_files 强>
可选。静态文件模式处理程序将URL模式与 随应用程序上传的静态文件的路径。网址格式 正则表达式可以定义要使用的正则表达式分组 在构造文件路径。您可以使用此代替 static_dir 映射到目录结构中的特定文件,而不映射整个目录。
示例:强>
handlers: # All URLs ending in .gif .png or .jpg are treated as paths to # static files in the static/ directory. The URL pattern is a # regular expression, with a grouping that is inserted into the # path to the file. - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$
url
是请求的路径,而static_files
和upload
是相对于您的应用/服务来源目录的真实文件路径,\1
和.*\.(gif|png|jpg)$
分别由url正则表达式匹配分组值替换 - 无论是在外圆周义务内部。
因此,对/a_file.gif
的请求将与url
正则表达式匹配,从而产生a_file.gif
分组。哪个将被static_files
和upload
替换为static/a_file.gif
- 应用源代码中文件的实际路径。
如果对static_dir
提出了匹配请求,则assets/images
配置存在/assets/images/<the_file>
下的任何文件将被提供,该文件名是什么
使用static_files
配置,您只能选择要提供的特定文件名(与正则表达式模式匹配),您可以使用不同的名称和/或不同的路径显示它们。相对于app dir。
如果您向正确的路径发出请求,static_files
config 应正常工作,例如/assets/images/<some_file>.png
(我假设您的图像文件存在的位置)。
但是,例如,如果您想要提供位于该assets/images
目录下的文件但仅仅请求/<some_file>.png
(即没有该路径前缀)的文件,则需要以不同的方式对其进行配置:< / p>
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: assets/images/\1
upload: assets/images/.+\.(gif|png|jpg)$
同时检查您是否配置了重叠的static_dir
和/或static_files
路径 - 可能导致模糊问题,请参阅Static files are missing