2009-06-10 54 views
2

每次从页面发布帖子时,整个CSS都会重新加载。有没有可能告诉他们不要一次又一次进来。有一系列的GET被解雇。我们能以某种方式进行优化还是正常行为?静态样式表会在每次发布请求后重新加载

环境是谷歌应用程序在Python中。

+0

我在我的app.yaml以下行,仍然将其与每个请求重新加载,我没有,虽然到期线,THX大家响应。 处理程序: - url:/ stylesheets static_dir:stylesheets – dhaval 2009-06-11 04:04:04

回答

2

结帐使用Static FilesHandlers for Static Files。由于后面的链接指向静态文件的缓存持续时间,我相信缓存功能是可能的。

与托管 环境中传统的网络,谷歌应用程序引擎不 没有直接除非 配置为这样做的文件服务解决您的 应用程序的源目录。我们将我们的 模板文件命名为index.html,但此 未自动使URL /index.html处的文件 可用。

但是,在很多情况下,您想要将 静态文件直接提供给网页浏览器。图片,CSS 样式表,JavaScript代码,电影 和Flash动画通常都是 与网络应用程序和 直接提供给浏览器。您可以让App Engine直接为特定的 文件提供服务,而无需使用 代码处理您自己的处理程序。

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 
1

如果你的CSS来自静态文件,然后史蒂夫·提到你希望把它放在一个静态目录,并指定它的app.yaml文件。例如,如果你的CSS文件在目录中称为样式表:

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) 
相关问题