> Django緩存框架提供了各種場景和用例,使開發人員能夠緩存經常訪問的數據。以下是常見的緩存方案:
頁面緩存。在這種情況下,經常在網站上經常訪問的頁面被完全緩存。該應用程序獲取頁面的緩存版本,並在提出請求時將其渲染,而不是從頭開始創建頁面的內容。
>數據庫查詢緩存。數據庫查詢緩存是一種依賴於經常要求數據庫以獲取信息的應用程序的好方法。可以通過同一片段的緩存數據來滿足一系列請求,而無需點擊數據庫,因此可以降低數據庫命中並加快服務器響應時間。
django緩存
的好處 在這種現代的環境中,緩存對Web開發人員越來越有利,在這種現代環境中,數據的本質和速度更為重要。這些是緩存的一些好處:減少了響應時間。緩存通過減少數據庫命中來最大程度地減少響應時間。緩存使數據可以從方便的位置獲取,而不是直接從數據庫中獲取。由於某些數據需要昂貴的計算,這些計算可能需要一些時間才能完成,因此每次從數據庫中需要獲取數據可能不是所有數據的最佳選擇。通過保存數據並在需要時立即使其可用,緩存節省了一天。
設置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中可用的不同緩存系統。
>本地內存緩存django會自動使用本地內存緩存作為默認的緩存系統。它的線程安全,快速且響應迅速的緩存技術是值得注意的。
>>要在應用程序中配置本地內存緩存,請在設置中添加以下代碼。
基於文件的緩存
在基於文件的緩存中,每個緩存值序列化並在緩存時分別保存在文件中。這對於小規模應用程序或基於內存的緩存不實用。
這個緩存系統的缺點是,與基於內存的緩存相比,它相對較慢。>要在您的應用程序中配置基於文件的緩存,請在設置中添加以下代碼。
$ python manage.py startapp cachedapplication
$ python <span>-m venv project </span>
>
如果您擁有快速,索引良好的數據庫服務器,則可以使用。要在您的應用程序中使用數據庫緩存,請在設置中添加以下代碼。
使用以下命令在使用緩存之前構造上面設置中提到的數據庫表:
$ .<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緩存,端口= 6379,請在settings.py中添加以下代碼:
>$ python <span>-m venv project </span>
>雷迪斯的複雜性和對外部服務的依賴是其權衡。重新安裝和配置可能比某些其他緩存後端更棘手。在線時,它需要第二台服務器和維護。 REDIS用法會依賴外部服務。如果REDIS有問題或下降,您的應用程序的緩存功能可能會受到影響。
>好吧,這是足夠的理論。在本節中,我們將演示如何在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中文網其他相關文章!