• tornado下使用静态文件和文件缓存


    静态文件和文件缓存

      1、在应用配置 settings 中指定 static_path 选项来提供静态文件服务;

        2、在应用配置 settings 中指定 static_url_prefix 选项来提供静态文件前缀服务;

      3、在导入静态文件时用 {{static_url('XX.css')}} 方式实现主动缓存静态文件

    Tornado中, 你可以通过在应用程序中指定特殊的 static_path 来提供静态文 件服务:

    settings = {
        "static_path": os.path.join(os.path.dirname(__file__), "static"),
        "cookie_secret": "__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__",
        "login_url": "/login",
        "xsrf_cookies": True,
    }
    application = tornado.web.Application([
        (r"/", MainHandler),
        (r"/login", LoginHandler),
        (r"/(apple-touch-icon.png)", tornado.web.StaticFileHandler,
         dict(path=settings['static_path'])),
    ], **settings)
    View Code

      为了改善性能, 通常情况下, 让浏览器主动缓存静态资源是个好主意, 这样浏览器 就不会发送不必要的可能在渲染页面时阻塞的 If-Modified-Since 或 Etag 请求了. Tornado使用 静态内容版本(static content versioning) 来支持此项功能.

      关于缓存的内容:http://www.cnblogs.com/_franky/archive/2012/07/05/2577141.html

      为了使用这些功能, 在你的模板中使用 static_url 方法 而不是直接在你的HTML中输入静态文件的URL:

    <html>
       <head>
          <title>FriendFeed - {{ _("Home") }}</title>
       </head>
       <body>
         <div><img src="{{ static_url("images/logo.png") }}"/></div>
       </body>
     </html>
    View Code

      因为参数 v 是基于文件内容的, 如果你更新一个文件并重启服务, 它将发送一个新的 v 值, 所以用户的浏览器将会自动的拉去新的文件. 如果文件的内容没有改变, 浏览器将会继续使用本地缓存的副本, 而不会从服务器检查更新, 显著的提高了渲染性能.

      在生产中, 你可能想提供静态文件通过一个更优的静态服务器, 比如 nginx . 你可以配置任何web服务器识别通过 static_url() 提供的版本标签并相应的设置缓存头. 下面是我们在 FriendFeed 使用的nginx相关配置的一部分:

    location /static/ {
        root /var/friendfeed/static;
        if ($query_string) {
            expires max;
        }
     }
    View Code
  • 相关阅读:
    处理Excel的值
    期初数据导入
    返回当前网页的url
    每次Title显示不同的名言
    js做的皮肤更换,可以记住最后更换的效果。
    未知高度的居中
    一个上传多个图片的js技巧
    1205 鸽巢原理
    acm网址
    ios在真机上调试时出现“Error launching remote program: failed to get the task for process xxx"解决办法
  • 原文地址:https://www.cnblogs.com/freely/p/6759669.html
Copyright © 2020-2023  润新知