目錄
鑰匙要點
在實施緩存之前,要做的第一件事是設置Django項目。因此,讓我們首先安裝Django。打開您的終端,然後運行此命令:
>本地內存緩存不太適合在生產環境中使用,因為它包含了一種每條程序機制,該機制可防止任何類型的交叉處理緩存,並使單個流程維護單獨的私有緩存實例。儘管如此,這仍然是一個不錯的選擇。
如果您在Windows上,請確保使用類似的驅動器字母開始位置的路徑:
>數據庫緩存
redis-py界面是由django或使用django-redis和redis軟件包的本機支持的綁定。
>使用redis
>還添加以下行:
首頁 後端開發 Python教學 Django緩存的綜合指南

Django緩存的綜合指南

Feb 10, 2025 pm 12:29 PM

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
Python vs.C:申請和用例 Python vs.C:申請和用例 Apr 12, 2025 am 12:01 AM

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

Python:遊戲,Guis等 Python:遊戲,Guis等 Apr 13, 2025 am 12:14 AM

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

您可以在2小時內學到多少python? 您可以在2小時內學到多少python? Apr 09, 2025 pm 04:33 PM

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

2小時的Python計劃:一種現實的方法 2小時的Python計劃:一種現實的方法 Apr 11, 2025 am 12:04 AM

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

Python與C:學習曲線和易用性 Python與C:學習曲線和易用性 Apr 19, 2025 am 12:20 AM

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

Python和時間:充分利用您的學習時間 Python和時間:充分利用您的學習時間 Apr 14, 2025 am 12:02 AM

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

Python:探索其主要應用程序 Python:探索其主要應用程序 Apr 10, 2025 am 09:41 AM

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

Python:自動化,腳本和任務管理 Python:自動化,腳本和任務管理 Apr 16, 2025 am 12:14 AM

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

See all articles