Django緩存的綜合指南
鑰匙要點
- 了解基礎知識:掌握Django中緩存的基礎概念,包括其對減少服務器負載的重要性以及通過加快響應時間來增強用戶體驗的重要性。 >設置和配置:學習如何設置DJANGO項目並配置各種緩存方法,例如本地內存,基於文件,數據庫和REDIS CACHING,``settings.py.py`文件'' 用於高級緩存的REDIS:潛入Django中使用Redis進行緩存,該緩存提供了快速的數據檢索功能,使其適合於高性能和分佈式系統。
- 實際實施:探索實用的緩存技術,例如查看緩存,模板碎片緩存和每個站點緩存,以顯著優化Web應用程序性能。
- 在本文中,您將對Django和整個Web開發中的緩存有一個全面的了解。您將了解什麼是緩存,緩存的好處,如何在Django建立緩存,Django支持的後端系統以及緩存的最佳實踐。 在文章結尾處,作為後端Web開發人員,您將對緩存以及如何在Django項目中實施它以獲得最佳性能。 > Django框架是當今Web開發人員使用的最受歡迎的後端框架之一。作為開發人員,構建具有高性能的Web應用程序應該是您列表中的目標之一。因此,在Django中構建Web應用程序以進行高性能不應該是麻煩,因為Django帶有一個緩存框架,該框架允許您使用各種緩存後端,例如內存中緩存,基於文件的緩存,數據庫緩存等。 django caching簡介
- Web開發中的緩存是Web開發人員使用的一種技術來提高Web應用程序的性能。每個Web應用程序都有其用戶一直希望使用的資源。資源可以是從直接網頁到存儲在數據庫中的數據的任何內容。緩存在最大化訪問資源的速度方面起著重要作用。 常見的緩存方案和用例
> Django緩存框架提供了各種場景和用例,使開發人員能夠緩存經常訪問的數據。以下是常見的緩存方案:
-
頁面緩存。在這種情況下,經常在網站上經常訪問的頁面被完全緩存。該應用程序獲取頁面的緩存版本,並在提出請求時將其渲染,而不是從頭開始創建頁面的內容。
>數據庫查詢緩存。數據庫查詢緩存是一種依賴於經常要求數據庫以獲取信息的應用程序的好方法。可以通過同一片段的緩存數據來滿足一系列請求,而無需點擊數據庫,因此可以降低數據庫命中並加快服務器響應時間。
>會話和身份驗證緩存。緩存可用於提供簡化的用戶體驗和更快的響應時間。由於緩存的數據將使用戶能夠輕鬆地在應用程序的身份驗證部分中移動,因此緩存身份驗證和會話詳細信息可以幫助減少冗餘的身份驗證操作。
-
django緩存
的好處 在這種現代的環境中,緩存對Web開發人員越來越有利,在這種現代環境中,數據的本質和速度更為重要。這些是緩存的一些好處:
減少了響應時間。緩存通過減少數據庫命中來最大程度地減少響應時間。緩存使數據可以從方便的位置獲取,而不是直接從數據庫中獲取。由於某些數據需要昂貴的計算,這些計算可能需要一些時間才能完成,因此每次從數據庫中需要獲取數據可能不是所有數據的最佳選擇。通過保存數據並在需要時立即使其可用,緩存節省了一天。
- 資源優化。 Web應用程序中的緩存數據或資源允許可以訪問和檢索資源,而無需執行重複操作以輸出相同的資源。
- >本節中的主要任務是創建虛擬環境並為項目安裝所需的模塊。要創建虛擬環境,請在您的終端中輸入此命令:
- 在Windows上使用以下方式:
在實施緩存之前,要做的第一件事是設置Django項目。因此,讓我們首先安裝Django。打開您的終端,然後運行此命令:
$ python <span>-m venv project </span>
成功安裝Django後,讓我們創建一個Django項目和應用程序。創建一個Django項目運行:
$ .<span>\project\Scripts\activate </span>
>導航到項目的文件夾中。在這裡,我們將創建一個Django應用程序。運行此命令:
$ <span>source project/bin/activate </span>
然後運行此:
$ pip <span>install django </span>
成功創建項目和應用程序後,我們必須向項目註冊該應用程序。打開settings.py文件,然後使installed_apps列表看起來像這樣:
>$ django-admin startproject cachedproject
>注意:要在您的Django項目中使用該應用程序,必須在installed_apps列表中註冊。
> 現在,要驗證Django框架是否已成功安裝,請進行測試。在終端中,運行此命令:
$ <span>cd cachedproject </span>
注意:您可以在SitePoint上快速啟動Django項目和Django應用程序。 >在設置中配置不同的緩存設置。 要使用緩存,我們需要在Django項目中進行配置,因此在本節中,我們將研究如何配置Django中可用的不同緩存系統。
>本地內存緩存的名稱暗示,本地內存緩存,有時縮寫為locmem,將緩存的數據存儲在託管機的RAM中。
django會自動使用本地內存緩存作為默認的緩存系統。它的線程安全,快速且響應迅速的緩存技術是值得注意的。
>>本地內存緩存不太適合在生產環境中使用,因為它包含了一種每條程序機制,該機制可防止任何類型的交叉處理緩存,並使單個流程維護單獨的私有緩存實例。儘管如此,這仍然是一個不錯的選擇。
>>要在應用程序中配置本地內存緩存,請在設置中添加以下代碼。
基於文件的緩存
在基於文件的緩存中,每個緩存值序列化並在緩存時分別保存在文件中。這對於小規模應用程序或基於內存的緩存不實用。
這個緩存系統的缺點是,與基於內存的緩存相比,它相對較慢。>要在您的應用程序中配置基於文件的緩存,請在設置中添加以下代碼。
$ python manage.py startapp cachedapplication
如果您在Windows上,請確保使用類似的驅動器字母開始位置的路徑:
$ python <span>-m venv project </span>
>數據庫緩存
除了將緩存存儲在文件中並託管機器的RAM之外,Django還提供了將緩存存儲在數據庫中的能力。>
如果您擁有快速,索引良好的數據庫服務器,則可以使用。要在您的應用程序中使用數據庫緩存,請在設置中添加以下代碼。
使用以下命令在使用緩存之前構造上面設置中提到的數據庫表:
$ .<span>\project\Scripts\activate </span>
上面的命令以Django的數據庫緩存系統期望的適當格式創建數據庫中的表。桌子的名稱是從該位置取的。在這種情況下,表的名稱將是my_cache_table。
$ <span>source project/bin/activate </span>
Memcached是一個內存的緩存系統,即使在幾家受歡迎的公司中,Web開發人員也使用了數據庫訪問並提高網站性能。 與LocMem緩存相反,Memcached作為守護程序操作,這意味著Memcached Server作為後台過程運行,與任何直接用戶交互無關。因此,必須將備忘錄分別安裝在您的機器上。然後在您的Django應用程序中,安裝和配置其一種綁定之一,例如PyliBMC或Pymemcache,以使用Memcached。
>可以通過添加緩存設置,位置,IP地址和其他詳細信息來將Django應用程序鏈接到Memcached守護程序,如下所示:> MEMCACHED技術特別適合具有較高讀取或查詢負載的應用,因為它是為快速數據存儲和檢索的。
> memcached的缺點是,由於數據存儲在內存中,因此如果您的服務器崩潰,它將丟失。redis
REDIS是一個可用於緩存的內存數據庫。它使用REDIS內存數據存儲緩存數據。 Redis以其快速性和適應性而聞名,使其成為分佈式系統和高性能緩存的理想選擇。
>$ pip <span>install django </span>
>
設置Redis服務器後,您需要為REDIS安裝Python綁定。使用此命令安裝它:
redis-py界面是由django或使用django-redis和redis軟件包的本機支持的綁定。
考慮到您的Redis Server在Localhost(127.0.0.1)上運行,要在您的應用程序中配置redis緩存,端口= 6379,請在settings.py中添加以下代碼:
>$ python <span>-m venv project </span>
>雷迪斯的複雜性和對外部服務的依賴是其權衡。重新安裝和配置可能比某些其他緩存後端更棘手。在線時,它需要第二台服務器和維護。 REDIS用法會依賴外部服務。如果REDIS有問題或下降,您的應用程序的緩存功能可能會受到影響。
>>使用redis
在Django中執行緩存好吧,這是足夠的理論。在本節中,我們將演示如何在Django應用程序中執行緩存。我們將重點介紹三種形式的緩存:
- >查看緩存
- 模板碎片緩存
- >每個位置緩存
,但是在我們詳細執行每個緩存表格之前,讓我們首先正確設置項目。我們將創建,註冊和填充模型,配置應用程序的URL,創建模板,安裝Django調試工具欄並進行配置。
>在CachedApplication應用程序中,打開Models.py文件並使其看起來像:接下來,打開admin.py文件並粘貼此代碼:
$ .<span>\project\Scripts\activate </span>
此代碼摘要註冊Django Admin儀表板中的模型程序員。
$ <span>source project/bin/activate </span>
也可以運行以下操作:
$ pip <span>install django </span>
$ django-admin startproject cachedproject
成功創建超級用戶後,啟動本地服務器,然後在瀏覽器中輸入此URL:http://127.0.0.1:8000/admin/。下圖顯示了您將被帶到的頁面。
$ <span>cd cachedproject </span>
登錄,提供超級用戶憑據,一旦進入,就會用數據填充模型,如下圖所示。
在應用程序內部,創建一個模板文件夾,然後在內部創建list_all.html文件。現在,將HTML文件空白。打開views.py文件並使其看起來像這樣:
現在打開list_all.html文件並粘貼以下代碼:
$ python <span>-m venv project </span>
>讓我們安裝一個Django調試工具欄。這是一個Python軟件包,可幫助開發人員監視其Django應用程序的性能,提供有關數據庫查詢,HTTP請求,模板渲染時間等的詳細信息。因此,在您的終端中,輸入此命令:
$ .<span>\project\Scripts\activate </span>
>要配置django-debug-toolbar,打開settings.py文件並編輯installed_apps列表,以如下查
$ <span>source project/bin/activate </span>
$ pip <span>install django </span>
>
$ django-admin startproject cachedproject
$ <span>cd cachedproject </span>
$ python manage.py startapp cachedapplication
最後,讓我們在URL.PY文件中配置調試工具欄URL。在導入下方,添加此代碼線:
>INSTALLED_APPS <span>= [ </span> <span>'django.contrib.admin', </span> <span>'django.contrib.auth', </span> <span>'django.contrib.contenttypes', </span> <span>'django.contrib.sessions', </span> <span>'django.contrib.messages', </span> <span>'django.contrib.staticfiles', </span> <span># new application added </span> <span>'cachedapplication', </span><span>] </span>
在URLPATTERNS列表中添加此代碼:
$ python manage.py runserver
到達了這麼遠,我們很高興去。運行服務器並將此URL粘貼到您的瀏覽器中:http://127.0.0.1:8000/home/。下圖顯示了我們獲取的頁面。
<span># CACHES dictionary which contains caching configurations. </span>CACHES <span>= { </span> <span># a cache alias or name. In this case, we use "default" as the alias. </span> <span>"default": { </span> <span># Here, we're using the in-memory cache backend. </span> <span>"BACKEND": "django.core.cache.backends.locmem.LocMemCache", </span> <span># LOCATION parameter gives a unique name or identifier to this cache instance. </span> <span>"LOCATION": "unique-snowflake", </span> <span>} </span><span>} </span>
>每次使用此視圖運行應用程序時,都會進行SQL查詢。在這種情況下,三個查詢已採用2.60ms。因此,為避免每次對相同數據進行SQL查詢,我們將實現視圖緩存。
>顧名思義,查看緩存的緩存涉及緩存單個django視圖的結果。在本節中,我們將實施視圖緩存。為此,我們將對View.py文件進行一些修改。打開它並添加此導入:
在視圖上方,還添加此裝飾符:
(60*15)是傳遞給@cache_page的參數。它代表秒內的緩存超時。房屋視圖將緩存15分鐘。
<span># A CACHES dictionary, which contains caching configurations. </span>CACHES <span>= { </span> <span># we use "default" as the alias. </span> <span>"default": { </span> <span># Here, we're using the file-based cache backend. </span> <span>"BACKEND": "django.core.cache.backends.filebased.FileBasedCache", </span> <span># LOCATION parameter to specify the file system path where cached data will be stored. </span> <span>"LOCATION": "/var/tmp/django_cache", </span> <span>} </span><span>} </span>
現在訪問相同的視圖並刷新頁面。我們將在下面顯示結果。
>CACHES <span>= { </span> <span>"default": { </span> <span>"BACKEND": "django.core.cache.backends.filebased.FileBasedCache", </span> <span>"LOCATION": "C:/my/path-to/file", </span> <span>} </span><span>} </span>
在上圖中,我們可以看到執行了0個SQL查詢,因為正在從緩存中獲取數據。這有助於通過向用戶提供緩存的內容來減少服務器上的負載。
>
模板碎片緩存
這個緩存涉及您項目中模板的特定部分的緩存。當您的模板具有大量計算的部分時,模板碎片緩存就派上用場了。要實現此緩存,我們使用以下標籤:{%加載緩存%},{%緩存%}和{%endCache%}。 {%cache%}標籤採用兩個參數:緩存超時,以及用於識別特定緩存片段的唯一緩存鍵。
>現在在實施此緩存技術之前嘗試運行該項目。下圖顯示了我們將獲得的。
總時間為220.26ms,在7.75ms中執行三個SQL查詢。
現在,讓我們實施緩存技術。我們將緩存模板的>
$ python <span>-m venv project </span>
如果您再次運行該項目,您將獲得下圖的結果。
在上圖中,我們可以看到在實施緩存後結果有所改善。
>每個位置緩存
>每個站點緩存也稱為全站點緩存。它涉及緩存整個網站的頁面。要實現它,您需要在設置中添加這些中間件配置。
>還添加以下行:
結論
$ .<span>\project\Scripts\activate </span>
如果您喜歡這篇文章,請在SitePoint上查看更多Django文章。
>以上是Django緩存的綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。
