使用 Google App Engine 和 bottle 提供静态 HTML
Serving static HTML with Google App Engine and bottle
我将 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 文件(都在 static
目录中)使用得很好,尽管没有直接提供。但是,转到 /
会导致 404 错误。我对 bottle.route
应该做什么以及 app.yaml
.
应该做什么感到有点困惑
为了完整起见,我的目录结构如下所示:
src
+-- main.py
+-- app.yaml
+-- static
+-- favicon.ico
+-- index.html
+-- stylesheet.css
+-- [other unimportant files]
下面的代码应该可以工作。
bottle = Bottle()
@bottle.route('/')
def index():
"""Serve index.html."""
return static_file('index.html', root=os.path.join(os.path.dirname(os.path.realpath(__file__)), "/static"))
要在 App Engine 中提供静态文件,直接从 app.yaml
执行此操作是迄今为止最有效的方法(对您的用户而言速度更快,并且如果您超过了免费的每日配额,对您而言成本更低)——只是添加
- url: /
static_files: static/index.html
到 app.yaml
在 "catch-all" url: /.*
指令之前。
这样,您的应用程序就不会在其他可能正在等待的静态文件请求之后排队,也不需要启动和预热新实例,也不需要 运行 您的任何代码-- 它只会将静态文件提供给用户 pronto,就像 Google 知道的一样快(包括缓存和类似 CDN 的加速 "behind the curtains" as/if 适用)。
确实没有理由从代码中提供静态文件,因为您可以轻松利用 Google 自己的服务基础设施!
我将 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 文件(都在 static
目录中)使用得很好,尽管没有直接提供。但是,转到 /
会导致 404 错误。我对 bottle.route
应该做什么以及 app.yaml
.
为了完整起见,我的目录结构如下所示:
src
+-- main.py
+-- app.yaml
+-- static
+-- favicon.ico
+-- index.html
+-- stylesheet.css
+-- [other unimportant files]
下面的代码应该可以工作。
bottle = Bottle()
@bottle.route('/')
def index():
"""Serve index.html."""
return static_file('index.html', root=os.path.join(os.path.dirname(os.path.realpath(__file__)), "/static"))
要在 App Engine 中提供静态文件,直接从 app.yaml
执行此操作是迄今为止最有效的方法(对您的用户而言速度更快,并且如果您超过了免费的每日配额,对您而言成本更低)——只是添加
- url: /
static_files: static/index.html
到 app.yaml
在 "catch-all" url: /.*
指令之前。
这样,您的应用程序就不会在其他可能正在等待的静态文件请求之后排队,也不需要启动和预热新实例,也不需要 运行 您的任何代码-- 它只会将静态文件提供给用户 pronto,就像 Google 知道的一样快(包括缓存和类似 CDN 的加速 "behind the curtains" as/if 适用)。
确实没有理由从代码中提供静态文件,因为您可以轻松利用 Google 自己的服务基础设施!