2017-11-11 10 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 element 테이블에서 static_files 행에 :

static_files

옵션. 정적 파일 패턴 핸들러는 URL 패턴을 애플리케이션과 함께 업로드 된 정적 파일에 연결합니다. URL 패턴 정규식은 파일 경로 구성에 을 사용할 정규식 그룹을 정의 할 수 있습니다. static_dir 대신 전체 디렉토리를 매핑하지 않고 디렉토리 구조의 특정 파일에 매핑 할 수 있습니다.

예 : static_filesupload 실제 파일 경로 앱/서비스 소스 디렉토리에 상대적 동안

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가 URL 정규식에 의해 대체 각각 \1.*\.(gif|png|jpg)$으로, 요청 된 경로입니다 일치하는 그룹화 값 - 무엇이든 외부 원형 패 런트 안에 있습니다.

따라서 /a_file.gif에 대한 요청은 url 정규식과 일치하여 a_file.gif 그룹을 생성합니다. 어느 static_filesupload로 대체됩니다 static/a_file.gif - 귀하의 애플 리케이션 소스 코드에서 파일의 실제 경로로. 당신의 static_dir 설정 /assets/images/<the_file>에 일치하는 요청이, 그 이름이 무엇 regardles을 만든 경우 assets/images가 제공 될 것입니다 아래에 존재하는 모든 파일로

.

static_files 설정을 사용하면 제공 할 특정 파일 이름 (정규식 패턴과 일치) 만 선택할 수 있으며 다른 이름 및/또는 실제로 경로와 다른 경로로 표시되도록 할 수 있습니다 app dir.

당신의 올바른 경로로 요청을 할 경우 작동한다 static_files 설정, /assets/images/<some_file>.png처럼 (예를 들어, 나는 당신의 이미지 파일이 존재하는 곳이있어 가정).

하지만, 예를 들어, 그 assets/images 디렉토리 아래에있는 파일을 제공하고 싶지만 (해당 경로 접두어없이 예) /<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