App Engine - app.yaml图片处理程序

时间:2017-11-11 03:27:44

标签: google-app-engine gcp app.yaml

我试图更好地理解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处理程序时,我的图像无法加载。

1 个答案:

答案 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_filesupload是相对于您的应用/服务来源目录的真实文件路径,\1.*\.(gif|png|jpg)$分别由url正则表达式匹配分组值替换 - 无论是在外圆周义务内部。

因此,对/a_file.gif的请求将与url正则表达式匹配,从而产生a_file.gif分组。哪个将被static_filesupload替换为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