亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

淺析Python的Django框架中的Memcached

系統 1815 0

動態網站的問題就在于它是動態的。 也就是說每次用戶訪問一個頁面,服務器要執行數據庫查詢,啟動模板,執行業務邏輯以及最終生成一個你所看到的網頁,這一切都是動態即時生成的。 從處理器資源的角度來看,這是比較昂貴的。

對于大多數網絡應用來說,過載并不是大問題。 因為大多數網絡應用并不是washingtonpost.com或Slashdot;它們通常是很小很簡單,或者是中等規模的站點,只有很少的流量。 但是對于中等至大規模流量的站點來說,盡可能地解決過載問題是非常必要的。

這就需要用到緩存了。

緩存的目的是為了避免重復計算,特別是對一些比較耗時間、資源的計算。 下面的偽代碼演示了如何對動態頁面的結果進行緩存。

            
given a URL, try finding that page in the cache
if the page is in the cache:
  return the cached page
else:
  generate the page
  save the generated page in the cache (for next time)
  return the generated page


          

為此,Django提供了一個穩定的緩存系統讓你緩存動態頁面的結果,這樣在接下來有相同的請求就可以直接使用緩存中的數據,避免不必要的重復計算。 另外Django還提供了不同粒度數據的緩存,例如: 你可以緩存整個頁面,也可以緩存某個部分,甚至緩存整個網站。

Django也和”上游”緩存工作的很好,例如Squid(http://www.squid-cache.org)和基于瀏覽器的緩存。 這些類型的緩存你不直接控制,但是你可以提供關于你的站點哪部分應該被緩存和怎樣緩存的線索(通過HTTP頭部)給它們
設定緩存

緩存系統需要一些少量的設定工作。 也就是說,你必須告訴它緩存的數據應該放在哪里,在數據庫中,在文件系統,或直接在內存中。 這是一個重要的決定,影響您的高速緩存的性能,是的,有些類型的緩存比其它類型快。

緩存設置在settings文件的 CACHE_BACKEND中。 這里是一個CACHE_BACKEND所有可用值的解釋。
內存緩沖

Memcached是迄今為止可用于Django的最快,最有效的緩存類型,Memcached是完全基于內存的緩存框架,最初開發它是用以處理高負荷的LiveJournal.com隨后由Danga Interactive公司開源。 它被用于一些站點,例如Facebook和維基百科網站,以減少數據庫訪問,并大幅提高站點的性能。

Memcached是免費的(http://danga.com/memcached)。它作為一個守護進程運行,并分配了特定數量的內存。 它只是提供了添加,檢索和刪除緩存中的任意數據的高速接口。 所有數據都直接存儲在內存中,所以沒有對使用的數據庫或文件系統的開銷。

在安裝了Memcached本身之后,你將需要安裝Memcached Python綁定,它沒有直接和Django綁定。 這兩個可用版本。 選擇和安裝以下模塊之一:

??? 最快的可用選項是一個模塊,稱為cmemcache,在http://gijsbert.org/cmemcache。

??? 如果您無法安裝cmemcache,您可以安裝python - Memcached,在ftp://ftp.tummy.com/pub/python-memcached/。如果該網址已不再有效,只要到Memcached的網站http://www.danga.com/memcached/),并從客戶端API完成Python綁定。

若要使用Memcached的Django,設置CACHE_BACKEND到memcached:/ / IP:port/,其中IP是Memcached的守護進程的IP地址,port是Memcached運行的端口。

在這個例子中,Memcached運行在本地主機 (127.0.0.1)上,端口為11211:

            
CACHE_BACKEND = 'memcached://127.0.0.1:11211/'


          

Memcached的一個極好的特性是它在多個服務器間分享緩存的能力。 這意味著您可以在多臺機器上運行Memcached的守護進程,該程序會把這些機器當成一個單一緩存,而無需重復每臺機器上的緩存值。 要充分利用此功能,請在CACHE_BACKEND里引入所有服務器的地址,用分號分隔。

這個例子中,緩存在運行在IP地址為172.19.26.240和172.19.26.242,端口號為11211的Memcached實例間分享:

            
CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/'


          

這個例子中,緩存在運行在172.19.26.240(端口11211),172.19.26.242(端口11212),172.19.26.244(端口11213)的Memcached實例間分享:

            
CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11212;172.19.26.244:11213/'


          

最后有關Memcached的一點是,基于內存的緩存有一個重大的缺點。 由于緩存的數據存儲在內存中,所以如果您的服務器崩潰,數據將會消失。 顯然,內存不是用來持久化數據的,因此不要把基于內存的緩存作為您唯一的存儲數據緩存。 毫無疑問,在Django的緩存后端不應該用于持久化,它們本來就被設計成緩存的解決方案。但我們仍然指出此點,這里是因為基于內存的緩存是暫時的。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久婷婷是五月综合色狠狠 | 欧美韩国日本在线观看 | 国产精品视频a | 在线观看国产一区二区三区 | 亚欧洲精品在线视频免费观看 | 久草久草视频 | 欧美成人一区二区三区在线视频 | a视频在线观看 | 亚洲图片欧美日韩 | 天天干天天操天天射 | 天海翼一区二区在线观看 | 中文字幕欧美一区 | 香蕉尹人综合精品 | 国产精品成人四虎免费视频 | 欧美精品在线观看 | 国产一区 在线视频 | 九九网 | 国产精品91av | 国产成人精品福利色多多 | 奇米影音777| 99香蕉国产 | 久久精品动漫99精品动漫 | 99爱在线精品视频网站 | 精品伊人久久久 | 福利岛国深夜在线 | 日韩欧美综合在线二区三区 | 精品国产一区二区三区久久 | 国产女人又爽又大 | 奇米狠狠干 | 亚洲欧美香蕉在线日韩精选 | 国产91久久精品一区二区 | 中文字幕日韩欧美一区二区三区 | 日本成本人观看免费视频fc2 | 久久香蕉国产线 | 奇米888888| 97国产在线播放 | 国99久9在线 | 免费 | 国内精品久久久久久影院网站小说 | 日韩中文字幕精品 | 成人a大片高清在线观看 | 中文精品视频一区二区在线观看 |