App Engine - app.yaml 图像处理程序
App Engine - app.yaml handler for images
我正在努力更好地理解 app.yaml。
GCP 文档建议像这样为您的图像创建处理程序:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files:
upload: .+\.(gif|png|jpg)$
application_readable: true
不过我用的更简单:
- url: /assets/images
static_dir: assets/images
我想了解Google使用的额外参数和正则表达式。
Google 和我的处理程序有什么区别?
PS 目前我的处理程序正在工作,但是当我使用 Google 处理程序时,我的图像不会加载。
解释在 Handlers element table:
的 static_files
行
static_files
Optional. A static file pattern handler associates a URL pattern with
paths to static files uploaded with the application. The URL pattern
regular expression can define regular expression groupings to be used
in the construction of the file path. You can use this instead of
static_dir to map to specific files in a directory structure without mapping the entire directory.
Example:
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/
upload: static/.*\.(gif|png|jpg)$
url
是请求的路径,而 static_files
和 upload
是相对于 app/service 源目录的真实文件路径,</code> 和 <code>.*\.(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
配置,您可以 select 仅提供特定的文件名(匹配正则表达式模式),并且您可以使它们以不同的名称出现 and/or与它们真正相对于应用程序目录的路径不同。
如果您向正确的路径发出请求,例如 /assets/images/<some_file>.png
,您的 static_files
配置 应该 正常工作(我假设那是您的图像文件所在的位置存在)。
但是,例如,如果您想要为位于 assets/images
目录下的文件提供服务,但仅请求为 /<some_file>.png
(即没有该路径前缀),您需要对其进行不同的配置:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: assets/images/
upload: assets/images/.+\.(gif|png|jpg)$
还要检查您是否配置了重叠的 static_dir
and/or static_files
路径 - 这可能会导致难以理解的问题,请参阅
我正在努力更好地理解 app.yaml。
GCP 文档建议像这样为您的图像创建处理程序:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files:
upload: .+\.(gif|png|jpg)$
application_readable: true
不过我用的更简单:
- url: /assets/images
static_dir: assets/images
我想了解Google使用的额外参数和正则表达式。
Google 和我的处理程序有什么区别?
PS 目前我的处理程序正在工作,但是当我使用 Google 处理程序时,我的图像不会加载。
解释在 Handlers element table:
的static_files
行
static_files
Optional. A static file pattern handler associates a URL pattern with paths to static files uploaded with the application. The URL pattern regular expression can define regular expression groupings to be used in the construction of the file path. You can use this instead of static_dir to map to specific files in a directory structure without mapping the entire directory.
Example:
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/ upload: static/.*\.(gif|png|jpg)$
url
是请求的路径,而 static_files
和 upload
是相对于 app/service 源目录的真实文件路径,</code> 和 <code>.*\.(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
配置,您可以 select 仅提供特定的文件名(匹配正则表达式模式),并且您可以使它们以不同的名称出现 and/or与它们真正相对于应用程序目录的路径不同。
如果您向正确的路径发出请求,例如 /assets/images/<some_file>.png
,您的 static_files
配置 应该 正常工作(我假设那是您的图像文件所在的位置存在)。
但是,例如,如果您想要为位于 assets/images
目录下的文件提供服务,但仅请求为 /<some_file>.png
(即没有该路径前缀),您需要对其进行不同的配置:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: assets/images/
upload: assets/images/.+\.(gif|png|jpg)$
还要检查您是否配置了重叠的 static_dir
and/or static_files
路径 - 这可能会导致难以理解的问题,请参阅