Python:Tornado 第四章:Tornado網站部署:第二節:靜態文件

上一篇文章: Python:Tornado 第四章:Tornado網站部署:第一節:調試模式
下一篇文章: Python:Tornado 第四章:Tornado網站部署:第三節:運營期配置

靜態文件下載是大多數網站必備的功能,與靜態文件相關的開發工做有兩類:配置靜態文件路徑和優化靜態文件訪問。css

一、配置靜態文件路徑

配置靜態文件路徑的目的在於爲客戶端提供靜態文件的可訪問性。Tornado提供了兩種方式進行配置靜態文件URL路徑與服務器本地路徑的關聯關係。html

(1)static目錄配置

在tornado.web.Application的構造函數中能夠傳入static_path參數,用於配置對URL路徑http://mysite.com/static中文件的本地路徑,好比:web

import tornado


def make_app():
    return tornado.web.Application([
        #此處寫入映射
    ],
        static_path="C:\\www\\static"
    )

這將使諸如http://mysite.com/static/favorite.png、http://mysite.com/static/css/main.cs這的文件的訪問映射到C:wwwstatic中。segmentfault

一般這些靜態文件的目錄與網站的代碼文件有某種相對關聯關係,能夠經過下面這樣的方法將該參數設置爲相對路徑:瀏覽器

import os
import tornado


def make_app():
    return tornado.web.Application([
        #此處寫入映射
    ],
        static_path=os.path.join(os.path.dirname(__file__),'static')
    )

即指定靜態目錄爲本程序文件所在目錄的static子目錄。緩存

(2)StaticFileHandler配置

若是除了http://mysite.com/static目錄還有其餘存放靜態文件的URL,則能夠用RequestHandler的子類StaticFileHandler進行配置,好比:服務器

def make_app():
    return tornado.web.Application([
        #此處寫入映射

        #這裏配置了3個StaticFileHandler
        (r'/css/(.*)',tornado.web.StaticFileHandler,{'path':'assets/css'}),
        (r'/images/png/(.*)',tornado.web.StaticFileHandler,{'path':'assets/image'}),
        (r'/js/(.*)',tornado.web.StaticFileHandler,{'path':'assets/js','default_filename':'templates/index.html'}),
    ],
        static_path=os.path.join(os.path.dirname(__file__),'static')
    )

本例中除了static_path,還用StaticFileHandler配置了另外3個靜態文件目錄。網絡

二、優化靜態文件訪問

優化靜態文件訪問的目的在於減小靜態文件的重複傳送,提升網絡及服務器的利用效率,經過在模板文件中用static_url方法修飾靜態文件連接能夠達到這個目的:app

<html>
<head>
</head>
<body>
<div><img src="{{static_url('images/logo.png')}}"/><div>
</body>
</html>

本例中的靜態圖像連接將被設置爲相似/static/images/logo.png?v=5ad4e的形式,其中的v=5ad4e是logo.png文件內容的哈希值,當Tornado靜態文件處理器發現該參數時,將通知瀏覽器該文件能夠無限期緩存,所以避免了以後訪問該文件時的反覆傳輸。函數

相關文章
相關標籤/搜索