我将Google App Engine与bottle.py结合使用,并试图在用户访问/时提供静态HTML文件.为此,我在main.py中有以下内容:
bottle = Bottle()
@bottle.route('/')
def index():
"""Serve index.html."""
return static_file('index.html', root='/static')
我的app.yaml中也包含以下内容:
handlers:
- url: /favicon\.ico
static_files: static/favicon.ico
upload: static/favicon\.ico
- url: /static
static_dir: static
application-readable: true
- url: /.*
script: main.bottle
favicon和CSS文件(均在静态目录中)可以很好地使用,尽管不能直接提供.但是,转到/会导致404错误.我对bottle.route应该做什么以及在app.yaml中应该做什么感到有些困惑.
为了完整起见,我的目录结构如下所示:
src
+-- main.py
+-- app.yaml
+-- static
+-- favicon.ico
+-- index.html
+-- stylesheet.css
+-- [other unimportant files]
解决方法:
要在App Engine中提供静态文件,到目前为止,直接从app.yaml中这样做的效率最高(如果您通过免费每日配额,则对您的用户来说速度更快,对您而言则更便宜).
- url: /
static_files: static/index.html
在“包罗万象”网址前添加到app.yaml:/.*指令.
这样,您的应用程序将不会在可能正在等待的其他人之后排队该静态文件请求,也不再需要启动并热身一个新实例,也不需要运行任何代码-它只会提供静态文件对用户而言,速度与Google知道的速度一样快(包括(如适用)“在幕后”进行缓存和类似CDN的加速).
当您可以如此轻松地利用Google自己的服务基础结构时,实际上没有理由从代码提供静态文件!