每次页面都有帖子时,整个css都会被重新加载。是否有可能告诉他们不要一次又一次地进来。有一系列的GET被解雇了。我们能以某种方式进行优化还是正常的行为?
环境是python中的谷歌应用程序。
答案 0 :(得分:2)
使用Static Files和Handlers for Static Files结帐。由于后一个链接指的是静态文件的缓存持续时间,我相信缓存功能是可能的。
与传统的网络托管不同 环境,Google App Engine 不直接提供文件 应用程序的源目录,除非 配置为这样做。我们命名了 模板文件index.html,但是这个 不会自动生成文件 可从URL /index.html获取。
但是你有很多情况 想直接提供静态文件 网络浏览器。图像,CSS 样式表,JavaScript代码,电影 和Flash动画都是典型的 存储在Web应用程序中 直接提供给浏览器。您 可以告诉App Engine特定服务 文件直接无需你 编码自己的处理程序。
答案 1 :(得分:1)
如果您的CSS来自静态文件,那么正如Steve所说,您希望将其放在静态目录中并在app.yaml文件中指定它。例如,如果您的CSS文件位于名为stylesheets的目录中:
handlers:
- url: /stylesheets
static_dir: stylesheets
expiration: "180d"
要记住这一点至关重要的是,当您上传新版本的CSS文件时,您必须更改文件名,否则,您网站的访问者仍将使用旧的缓存版本而不是闪亮的新版本。简单地增加一个数字就可以了。
如果您的CSS是动态生成的,那么当请求进入时,您希望在响应对象的标头中设置缓存。例如,在您的请求处理程序中,您可能会遇到以下情况:
class GetCSS(webapp.RequestHandler):
def get(self):
# generate the CSS file here, minify it or whatever
# make the CSS cached for 86400s = 1 day
self.response.headers['Cache-Control'] = 'max-age=86400'
self.response.out.write(your_css)
答案 2 :(得分:0)
您只需将所有css放在“静态目录”中,并在app.yaml文件中指定过期时间。
这是我的一个项目的app.yaml:
application: <my_app_id>
version: 1
runtime: python
api_version: 1
skip_files: |
^(.*/)?(
(app\.yaml)|
(index\.yaml)|
(\..*)|
(.*\.pyc)|
(.*\.bat)|
(.*\.svn/.*)|
(.*\.lnk)|
(datastore/.*)|
(img/src_img/.*)|
)$
handlers:
- url: /favicon\.ico
static_files: img/favicon.ico
upload: img/favicon.ico
expiration: 180d
- url: /img
static_dir: img
expiration: 180d
- url: /static-js
static_dir: static-js
expiration: 180d
- url: .*
script: main.py