django 中的快取問題
簡單介紹
在動態**中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.
當乙個**的使用者訪問量很大的時候,每一次的的後台操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.
快取是將一些常用的資料儲存記憶體或者memcache中,在一定的時間內有人來訪問這些資料時,則不再去執行資料庫及渲染等操作,而是直接從記憶體或memcache的快取中去取得資料,然後返回給使用者.
一、django 中的快取方式
開發除錯快取
記憶體快取
檔案快取
資料庫快取
memcache快取(使用python-memcached模組)
memcache快取(使用pylibmc模組)
經常使用的有檔案快取和mencache快取
二、快取粒度
全棧快取
單頁面快取
區域性快取
三、如何使用快取
3.2.1 開發除錯(此模式為開發除錯使用,實際上不執行任何操作)
settings.py檔案配置
caches =
}--------->}$
上面的例子是基於記憶體的快取配置,基於檔案的快取該怎麼配置呢??
更改settings.py的配置
caches =
}--------->}$
4.3區域性檢視快取
例子,重新整理頁面時,整個網頁有一部分實現快取
views檢視函式
from django.views.decorators.cache import cache_page
import time
from .models import *
def index(request):
t=time.time() #獲取當前時間
booklist=book.objects.all()
return render(request,"index.html",locals())
模板(index.html):
title
四、如何提高**的併發量
qps:
前端處理--(主要是減少請求次數)
使用 cdn (靜態檔案放在別人的伺服器上面去)
cdn的全稱是content delivery network,即內容分發網路。cdn是構建在網路之上的內容分發網路,依靠部署在各地的邊緣伺服器,通過中心平台的負載均衡、內容分發、排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。cdn的關鍵技術主要有內容儲存和分發技術。cdn的基本原理是廣泛採用各種快取伺服器,將這些快取伺服器分布到使用者訪問相對集中的地區或網路中,在使用者訪問**時,利用全域性負載技術將使用者的訪問指向距離最近的工作正常的快取伺服器上,由快取伺服器直接響應使用者請求。
可以挺過refer 控制
nginx 處理
精靈圖(拼圖,多次請求變成一次請求)
頁面本地快取
後端:nginx 擋在wsgi之前-nginx 的負載均衡 後台服務做集群部署
反向**
正向**
進入到中介軟體過後 -----後台快取 在 process_request 裡面寫
---設定快取的超時時間,保持快取資料更新一致性的問題
資料庫的主從同步
資料庫的讀寫分離(用的比較多)
非同步處理(celery:分布式的非同步任務框架)
用效能高的語言去處理併發高的語言
tps反向**
在計算機網路中,反向**是**伺服器的一種。伺服器根據客戶端的請求,從其關聯的一組或多組後端伺服器上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向**的ip位址,而不知道在**伺服器後面的伺服器簇的存在[1]。
與前向**不同,前向**作為客戶端的**,將從網際網路上獲取的資源返回給乙個或多個的客戶端,服務端(如web伺服器)只知道**的ip位址而不知道客戶端的ip位址;而反向**是作為伺服器端(如web伺服器)的**使用,而不是客戶端。客戶端藉由前向**可以間接訪問很多不同網際網路伺服器(簇)的資源,而反向**是供很多客戶端都通過它間接訪問不同後端伺服器上的資源,而不需要知道這些後端伺服器的存在,而以為所有資源都來自於這個反向**伺服器。
正向**
正向**:是乙個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向**傳送乙個請求並指定目標(原始伺服器),然後**向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向**。
集群和分布式
負載均衡
負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。
負載均衡(load balance)其意思就是分攤到多個操作單元上進行執行,例如web伺服器、ftp伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。
輪詢:輪詢(polling)是一種cpu決策如何提供周邊裝置服務的方式,又稱「程式控制輸入輸出」(programmed i/o)。輪詢法的概念是:由cpu定時發出詢問,依序詢問每乙個周邊裝置是否需要其服務,有即給予服務,服務結束後再問下乙個周邊,接著不斷周而復始。
djang內部快取 Redis
由django渲染的頁面 要被快取的區域性內容 from django.views.decorators.cache import cache page cache page 10 代表該檢視函式渲染的頁面被快取10s def test cache request import time c tim...
python的django介紹 Django 簡介
django 簡介 自強學堂的django教程將節省你大量的時間,並且使你的web開發充滿樂趣。通過django,你可以建立乙個高效能的web應用而只花費最少的時間和精力。django 中提供了開發 經常用到的模組,常見的 都為你寫好了,通過減少重複的 django 使你能夠專注於 web 應用上有...
yii2 重新整理快取(重新整理模型快取)
yii2開啟表結構快取,因為當運用模型 model 時,ar的一些公共屬性都會從db中獲取,這樣會導致伺服器負擔一些額外的資源開銷,實際上對於成品來說,伺服器這些開始銷是多餘的,故應該阻止這種預設行為,把錶結構進行快取起來,提高效率.yii2的快取值得深入研究學習.開啟資料庫表結構的schema快取...