2017-11-11 99 views
0

我试图更好地理解app.yaml。App Engine - 用于图像的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和我的处理程序有什么区别?

PS在我的处理程序正在工作的那一刻,但是当我使用Google处理程序时,我的图像无法加载。

回答

2

的解释是从Handlers elementstatic_files行:

static_files

可选。静态文件模式处理程序将URL模式与 路径关联到应用程序上传的静态文件。 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>而成,那文件名是什么regardles会送达。

使用static_files配置,您可以只选择要提供的特定文件名(与正则表达式模式相匹配),并且可以使它们以不同的名称和/或与其实际相关的路径显示应用程序目录。

static_files的配置,如果你提出要求,以正确的路径应该工作,像/assets/images/<some_file>.png例如(我假定这就是存在的图像文件)。

但是,如果你想要的,例如,服务于位于根据该assets/images DIR文件,但只是要求为/<some_file>.png(即没有该路径前缀),你需要以不同的方式进行配置:

# 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

相关问题