【问题标题】:static stylesheets gets reloaded with each post request每次发布请求都会重新加载静态样式表
【发布时间】:2009-06-10 17:01:08
【问题描述】:

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

环境是python中的google apps。

【问题讨论】:

  • 我的 app.yaml 中有以下几行,但它仍然会随着每个请求重新加载,但我没有过期行,谢谢大家的回复。 handlers: - url: /stylesheets static_dir: stylesheets

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


【解决方案1】:

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

不同于传统的网络托管 环境,Google App Engine 可以 不直接从您的文件中提供文件 应用程序的源目录,除非 配置为这样做。我们命名了我们的 模板文件 index.html,但是这个 不会自动生成文件 可在 URL /index.html 获得。

但是在很多情况下,您 想要直接提供静态文件到 网络浏览器。图片,CSS 样式表、JavaScript 代码、电影 和 Flash 动画通常都是 与 Web 应用程序一起存储,并且 直接提供给浏览器。你 可以告诉 App Engine 提供特定服务 直接文件,而无需 编写自己的处理程序。

【讨论】:

    【解决方案2】:

    如果您的 CSS 来自静态文件,那么正如史蒂夫所说,您希望将其放在静态目录中并在您的 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)
    

    【讨论】:

      【解决方案3】:

      您只需将所有 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-21
        • 2015-06-10
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        相关资源
        最近更新 更多