每个帖子请求都会重新加载静态样式表

时间:2009-06-10 17:01:08

标签: python css google-app-engine post get

每次页面都有帖子时,整个css都会被重新加载。是否有可能告诉他们不要一次又一次地进来。有一系列的GET被解雇了。我们能以某种方式进行优化还是正常的行为?

环境是python中的谷歌应用程序。

3 个答案:

答案 0 :(得分:2)

使用Static FilesHandlers 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