首頁 > 後端開發 > Python教學 > Django緩存的綜合指南

Django緩存的綜合指南

Christopher Nolan
發布: 2025-02-10 12:29:11
原創
365 人瀏覽過

Django緩存的綜合指南

鑰匙要點

  • 了解基礎知識:掌握Django中緩存的基礎概念,包括其對減少服務器負載的重要性以及通過加快響應時間來增強用戶體驗的重要性。
  • >設置和配置:學習如何設置DJANGO項目並配置各種緩存方法,例如本地內存,基於文件,數據庫和REDIS CACHING,``settings.py.py`文件'' 用於高級緩存的REDIS:潛入Django中使用Redis進行緩存,該緩存提供了快速的數據檢索功能,使其適合於高性能和分佈式系統。
  • 實際實施:探索實用的緩存技術,例如查看緩存,模板碎片緩存和每個站點緩存,以顯著優化Web應用程序性能。
  • 績效優勢:認識到通過實施Django的緩存策略可以實現的應用速度和效率的顯著提高,最終導致了更好的最終用戶體驗。
  • 在本文中,您將對Django和整個Web開發中的緩存有一個全面的了解。您將了解什麼是緩存,緩存的好處,如何在Django建立緩存,Django支持的後端系統以及緩存的最佳實踐。 在文章結尾處,作為後端Web開發人員,您將對緩存以及如何在Django項目中實施它以獲得最佳性能。
  • > Django框架是當今Web開發人員使用的最受歡迎的後端框架之一。作為開發人員,構建具有高性能的Web應用程序應該是您列表中的目標之一。因此,在Django中構建Web應用程序以進行高性能不應該是麻煩,因為Django帶有一個緩存框架,該框架允許您使用各種緩存後端,例如內存中緩存,基於文件的緩存,數據庫緩存等。 django caching簡介
  • Web開發中的緩存是Web開發人員使用的一種技術來提高Web應用程序的性能。每個Web應用程序都有其用戶一直希望使用的資源。資源可以是從直接網頁到存儲在數據庫中的數據的任何內容。緩存在最大化訪問資源的速度方面起著重要作用。
  • 常見的緩存方案和用例

> Django緩存框架提供了各種場景和用例,使開發人員能夠緩存經常訪問的數據。以下是常見的緩存方案:

  • 頁面緩存。在這種情況下,經常在網站上經常訪問的頁面被完全緩存。該應用程序獲取頁面的緩存版本,並在提出請求時將其渲染,而不是從頭開始創建頁面的內容。

  • >數據庫查詢緩存。數據庫查詢緩存是一種依賴於經常要求數據庫以獲取信息的應用程序的好方法。可以通過同一片段的緩存數據來滿足一系列請求,而無需點擊數據庫,因此可以降低數據庫命中並加快服務器響應時間。

  • >會話和身份驗證緩存。緩存可用於提供簡化的用戶體驗和更快的響應時間。由於緩存的數據將使用戶能夠輕鬆地在應用程序的身份驗證部分中移動,因此緩存身份驗證和會話詳細信息可以幫助減少冗餘的身份驗證操作。
  • django緩存

    的好處 在這種現代的環境中,緩存對Web開發人員越來越有利,在這種現代環境中,數據的本質和速度更為重要。這些是緩存的一些好處:

提高了性能。緩存通過減少服務器負載來增強Web應用程序的性能。當服務器從應用程序獲得請求時,緩存可確保使用先前緩存的數據滿足某些請求。這樣可以防止服務器必須從頭開始執行這些操作。結果,用戶的體驗總體上得到了改善,並且反應時間得到了加速。

減少了響應時間。緩存通過減少數據庫命中來最大程度地減少響應時間。緩存使數據可以從方便的位置獲取,而不是直接從數據庫中獲取。由於某些數據需要昂貴的計算,這些計算可能需要一些時間才能完成,因此每次從數據庫中需要獲取數據可能不是所有數據的最佳選擇。通過保存數據並在需要時立即使其可用,緩存節省了一天。
  • 資源優化。 Web應用程序中的緩存數據或資源允許可以訪問和檢索資源,而無需執行重複操作以輸出相同的資源。

    設置Django項目
  • >本節中的主要任務是創建虛擬環境並為項目安裝所需的模塊。要創建虛擬環境,請在您的終端中輸入此命令:

  • >該項目的所有模塊都將安裝在此環境中,因此要開始使用它,我們需要激活它。
  • 在Windows上使用以下方式:

  • 以及在MacOS或Linux上,使用以下方式:

在實施緩存之前,要做的第一件事是設置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>
登入後複製
登入後複製
登入後複製
確保您獲取下圖的輸出。

Django緩存的綜合指南

現在復制URL並將其粘貼到Web瀏覽器中。預期的輸出如下所示。

Django緩存的綜合指南

注意:您可以在SitePoint上快速啟動Django項目和Django應用程序。 >在設置中配置不同的緩存設置。 要使用緩存,我們需要在Django項目中進行配置,因此在本節中,我們將研究如何配置Django中可用的不同緩存系統。

>本地內存緩存

的名稱暗示,本地內存緩存,有時縮寫為locmem,將緩存的數據存儲在託管機的RAM中。 > 如果您在settings.py文件中不提供替代的緩存機制,則

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緩存

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服務器。要在計算機上設置Redis,請閱讀REDIS入門指南。

>

設置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中,我們可以通過兩種方式填充我們的模型:通過終端和管理儀表板。但是為了簡單起見,我們將使用管理儀表板。由於管理儀表板僅適用於超級用戶,因此我們需要創建一個。在終端中,運行以下命令:

$ django-admin startproject cachedproject
登入後複製
登入後複製
登入後複製
此命令將提示您輸入超級用戶的詳細信息,例如用戶名,電子郵件和兩個密碼。

成功創建超級用戶後,啟動本地服務器,然後在瀏覽器中輸入此URL:http://127.0.0.1:8000/admin/。下圖顯示了您將被帶到的頁面。
$ <span>cd cachedproject
</span>
登入後複製
登入後複製
登入後複製
>

登錄,提供超級用戶憑據,一旦進入,就會用數據填充模型,如下圖所示。

Django緩存的綜合指南

在應用程序內部,創建一個模板文件夾,然後在內部創建list_all.html文件。現在,將HTML文件空白。打開views.py文件並使其看起來像這樣:

Django緩存的綜合指南

現在,讓我們在項目的urls.py文件中註冊房屋視圖。在cachedproject文件夾中,打開urls.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>
登入後複製
登入後複製
登入後複製
添加REDIS CACE配置如下:

$ 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緩存的綜合指南

>查看緩存

>顧名思義,查看緩存的緩存涉及緩存單個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查詢,因為正在從緩存中獲取數據。這有助於通過向用戶提供緩存的內容來減少服務器上的負載。

>

模板碎片緩存

Django緩存的綜合指南這個緩存涉及您項目中模板的特定部分的緩存。當您的模板具有大量計算的部分時,模板碎片緩存就派上用場了。要實現此緩存,我們使用以下標籤:{%加載緩存%},{%緩存%}和{%endCache%}。 {%cache%}標籤採用兩個參數:緩存超時,以及用於識別特定緩存片段的唯一緩存鍵。

>

>現在在實施此緩存技術之前嘗試運行該項目。下圖顯示了我們將獲得的。

Django緩存的綜合指南

總時間為220.26ms,在7.75ms中執行三個SQL查詢。

現在,讓我們實施緩存技術。我們將緩存模板的
部分。打開模板/list_all.html,然後將其修改為如下:

>

$ python <span>-m venv project
</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
在文件的頂部,我們通過{%加載緩存%}加載緩存,並用{%cache 500 programMers%}和{%endCache%}將div部分包含。

如果您再次運行該項目,您將獲得下圖的結果。 >

在上圖中,我們可以看到在實施緩存後結果有所改善。 Django緩存的綜合指南>每個位置緩存

>每個站點緩存也稱為全站點緩存。它涉及緩存整個網站的頁面。要實現它,您需要在設置中添加這些中間件配置。

>還添加以下行:

結論
$ .<span>\project\Scripts\activate
</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
總而言之,了解Django中的緩存對於希望創建高性能Web應用程序的Web開發人員至關重要。本文提供了Django中緩存的綜合指南,涵蓋了諸如緩存,在Django中建立緩存以及實施最佳實踐的主題。有了這些知識,後端網絡開發人員可以自信地將緩存納入其Django項目以優化性能。

如果您喜歡這篇文章,請在SitePoint上查看更多Django文章。

>

以上是Django緩存的綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板