激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 淺析Python的Django框架中的Memcached

淺析Python的Django框架中的Memcached

2020-07-26 11:14Python教程網 Python

這篇文章主要介紹了淺析Python的Django框架中的緩存機制,其中著重講到了Memcached,需要的朋友可以參考下

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

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

這就需要用到緩存了。

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

?
1
2
3
4
5
6
7
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:

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

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

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

?
1
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實例間分享:

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

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 毛片免费大全短视频 | 久久久精品综合 | 影视免费观看 | 久久精品亚洲欧美日韩精品中文字幕 | 国产亚洲精彩视频 | 97中文字幕在线观看 | 国产午夜精品久久久久久免费视 | 欧美性生视频 | 伊人成人免费视频 | 亚洲精品永久视频 | 久久97超碰| 精品国产乱码久久久久久久久 | 性爱视频免费 | 久久久成人精品视频 | 欧美精品久久久久久久久老牛影院 | 国模论坛| 在线播放av片 | 日韩欧美精品中文字幕 | 亚洲欧洲日韩av | 久久综合久久综合久久综合 | 国产午夜亚洲精品午夜鲁丝片 | 国产成人精品网站 | 日韩激情一区 | 亚洲综合色视频在线观看 | 欧美一级一区二区三区 | 成人福利视频在 | 成人乱码一区二区三区不卡视频 | 亚洲99 | 黄色免费不卡视频 | 国产毛片电影 | 欧美久久久久久久久 | 成人毛片视频在线播放 | 日美av在线 | 一级国产电影 | 久久草在线观看视频 | 日本在线不卡一区二区 | 欧美黄色一级片视频 | 国产午夜精品一区二区三区在线观看 | 中文字幕免费在线看 | 成年人免费视频播放 | aa国产视频一区二区 |