Django項目緩存優化的介紹及具體使用

這篇文章主要講解了“Django項目緩存優化的介紹及具體使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Django項目緩存優化的介紹及具體使用”吧!

創新互聯是專業的山陰網站建設公司,山陰接單;提供成都網站設計、做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行山陰網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

一、為什么要使用緩存

大家可以想一下Django的請求響應流程:

→ 用戶瀏覽器輸入URL地址

→ Web服務器將HTTP請求轉發給uWSGI服務器

→ uWSGI服務器將Request請求轉發給Django應用

→ Django中間件處理Request請求

→ 視圖View處理

→ 模型類Models獲取數據

→ 模板Template渲染

→ 再次經過Django中間件返回

→ uWSGI服務器將Response返回給Web服務器

→ Web服務器響應客戶端的HTTP請求。

這其中耗時最多的2個環節通常是視圖中業務邏輯處理和從Models獲取數據(SQL查詢),對于相同目的請求,也就是業務處理邏輯和SQL查詢的數據都一樣的請求,每次都進行了重復的計算,并且數據是從硬盤讀取而非內存。

所以使用緩存有如下好處:

  • 降低服務器負載

  • 避免重復計算

  • 提高系統性能

二、如何進行緩存

很簡單,一個Request請求過來,先去緩存中查詢,有就返回;沒有就去數據庫查詢并處理,然后把結果緩存好(供下次請求使用),再返回。用偽代碼解釋的話就是這樣

Django項目緩存優化的介紹及具體使用

三、緩存的類型

1. Memcached 效率最高,最快的緩存
2. Database caching 數據庫緩存,這個指把數據緩存到數據表,比如你項目中使用的MySQL,就在MySQL中建表來專門緩存數據。不是指用redis數據庫
3. Filesystem caching 文件系統緩存,將緩存會把鍵值存儲到獨立的文件中去
4. Local-memory caching 使用系統內存緩存
5. Dummy caching (for development) 假緩存,只在開發過程中使用,以調試緩存接口,數據并沒有真正緩存
6. Using a custom cache backend 自定義緩存后端,比如使用Redis

那么問題來了,我該使用哪種緩存呢?

其實常用的也就2種:Memcached或者Reids,其它基本不用考慮了。Redis國內用得多,支持RDB和AOF兩種持久化方式,支持高可用集群,技術和方案很成熟。Memcached是純內存存儲,本身不支持持久化,不支持分布式,但是它內存管理效率高。

四、緩存粒度分類

  1. Per-site cache 把整個網站都緩存了,只需要在項目中設置加入緩存中間鍵的配置,系統便會自動對整個網站進行緩存

  2. Per-view cache 緩存某個視圖

  3. Template fragment caching 模板的片段,比如Django模板繼承base.html,通常是不變的導航欄

  4. Low-level cache API 低級別緩存API,比如緩存某個函數的結果,或者某個API接口

那么問題又來了,項目中我該選擇什么樣的緩存粒度?

是否需要緩存很簡單,看內容是否變化。如果整個視圖的數據通常都不變,就使用視圖緩存,某些模板片段的數據不變就使用模板片段緩存等等。所以一個項目里面多種緩存粒度都有的

Django項目緩存優化的介紹及具體使用

五、Django緩存設置

這里只說一下Redis和Memcached的,其它很少用的就不羅列了,需要注意的是系統上要安裝對應的緩存服務,Django開發環境中要安裝連接緩存服務的包(比如django-redis或pymemcache)

Memcache緩存設置

最簡單的,配置地址和端口,不一定是要在本機,也可以是其它網段的服務器或集群

Django項目緩存優化的介紹及具體使用

在本機的話,也可以使用unix Socket

Django項目緩存優化的介紹及具體使用

也可以使用多態服務器,不同端口緩存

Django項目緩存優化的介紹及具體使用

Redis緩存設置

截圖一下實戰課程中Redis緩存的配置,緩存網站的數據

Django項目緩存優化的介紹及具體使用

Django channels頻道層的緩存

Django項目緩存優化的介紹及具體使用

Celery緩存,broker和任務的執行結果

Django項目緩存優化的介紹及具體使用

六、緩存的使用

對于Django項目緩存的數據,我們取出來或存進去操作,可以不需要直接操作底層的緩存數據,比如使用原生的Redis或Memcached命令,只需要使用Django提供的緩存API即可。就像我們使用Django ORM一樣,無需關注底層數據庫是MySQL, PostgreSQL或SQLite,ORM語句都一樣。

例如,訪問緩存

Django項目緩存優化的介紹及具體使用

使用緩存

Django項目緩存優化的介紹及具體使用

除了set(), get()還有get_or_set(), get_many(), set_many(), delete(), delete_many(), clear(), touch(), incr(), decr(), close()操作。大家可以去看看官網文檔一個個操作下,要注意的是有的API不是每一個Django版本都有,比如cache.touch()是Django 2.1版本才有的。

七、Django緩存優化性能評估

緩存使用了,那效果怎么樣,有什么指標可以衡量?用什么工具來衡量?

Django Debug Toolbar

這點在之前的Python學習教程中有跟大家講到過!

django-debug-toolbar是一個開源的工具,可以在看板上展示django對request/response處理的詳細信息,比如當前請求響應的CPU耗時,settings/headers/request信息,當前請求使用的模板文件,靜態文件,具體SQL語句和執行時間等等,看板要顯示什么信息是可以靈活配置的。

右邊的欄目就是django-debug-tool的看板

Django項目緩存優化的介紹及具體使用

此頁面共有9次SQL查詢,耗時8.62毫秒

Django項目緩存優化的介紹及具體使用

緩存命中3次,cache.get(),用時約0.91毫秒

Django項目緩存優化的介紹及具體使用

感謝各位的閱讀,以上就是“Django項目緩存優化的介紹及具體使用”的內容了,經過本文的學習后,相信大家對Django項目緩存優化的介紹及具體使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

網站標題:Django項目緩存優化的介紹及具體使用
新聞來源:http://m.kartarina.com/article32/pihisc.html

成都網站建設公司_創新互聯,為您提供自適應網站標簽優化網站營銷網頁設計公司企業建站網站收錄

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
主站蜘蛛池模板: 97久久精品无码一区二区天美| 精品少妇人妻av无码久久| 亚洲色无码一区二区三区| 亚洲Aⅴ在线无码播放毛片一线天 亚洲av成本人无码网站 | 人妻无码αv中文字幕久久琪琪布| 国产av永久无码天堂影院| 日韩精品无码一区二区视频| 亚洲日韩精品A∨片无码| 精品久久久久久无码专区| 亚洲一级特黄大片无码毛片| 久久精品无码精品免费专区| 亚洲精品无码少妇30P| 国产亚洲精品无码拍拍拍色欲| 精品无码国产自产在线观看水浒传| 无码8090精品久久一区| 午夜亚洲AV日韩AV无码大全| 精品乱码一区内射人妻无码| 一本一道av中文字幕无码| 九九无码人妻一区二区三区| 亚洲AV无码AV日韩AV网站| 伊人久久综合精品无码AV专区| 无码av免费一区二区三区试看| 亚洲av日韩av高潮潮喷无码| 国产精品va在线观看无码| 免费无码毛片一区二区APP| 国产强被迫伦姧在线观看无码| 久久亚洲AV成人无码| yy111111少妇影院无码| 免费无码又黄又爽又刺激 | 全免费a级毛片免费看无码| 国产精品无码A∨精品影院| 免费无码又爽又高潮视频| 日韩乱码人妻无码中文字幕久久| 国产午夜精品无码| 人妻无码中文字幕| 国产精品成人一区无码| 亚洲中文字幕无码中文| 国产午夜片无码区在线播放| 精品乱码一区内射人妻无码| 国产久热精品无码激情| 亚洲成在人线在线播放无码|