架構
CS架構(client/server):客戶端/服務器
BS架構(brower/server):瀏覽器/服務器
區別:
- 客戶端負載
- CS負載大
- 更新維護,收集用戶信息,和用戶交互,發送請求
- BS負載小,只負責展示,將邏輯處理的過程交給了服務器
- CS負載大
- 維護成本(版本迭代,bug修改,運維相關)
- CS大
- 需要下載更新包
- BS小
- 只需要修改服務器
- CS大
- 安全性
- CS高
- 需要下載客戶端
- BS低
- 用戶量羣體較大,不穩定
- CS高
手機app
- 原生:安卓寫的
- html:安卓->瀏覽器->html頁面
數據庫優化
- sql語句
- 增
- 刪
- 改
- 查
- 少使用*
- 使用join代替子查詢(where from–需要別名)
- 索引字段靠左原則
- where,group by,having
- 表結構優化
- 字段
- 字段類型的選擇
- 主鍵外鍵
- 分表
- 三範式
- 字段
- 庫結構優化
- 分庫
- 水平
- 垂直
- 分庫
- 水平分表
- 主鍵全局唯一
- 水平分庫分表
- 事務的處理,關聯查詢
- 數據庫架構優化
性能不高->IO操作
mysql數據存儲在硬盤
硬盤->加載->內存->讀
緩存
緩存是一類快速讀取數據的介質。常用的緩存介質是讀取數據快的內存。
一般來說,從數據庫中多次將需要的數據取出,要比從內存中或者硬盤中一次性將數據取出來成本高。
對於大中型網站而言,使用緩存減少了數數據庫的訪問次數,從而提高了網站的性能。
緩存:緩存就是將數據提前放在一個地方(內存),訪問時,直接從緩存中返回數據,不需要再次查詢數據庫。
緩存邏輯
判斷想要的數據是否在緩存當中
- 是
- 直接返回數據
- 否
- 查詢數據庫,保存在緩存中,返回數據
緩存常用的方式
Memcache緩存:是分佈式的高速緩存技術,是當下最火的,使用最多的。
(一)安裝
1.本地安裝
查看並啓動服務
2.安裝
pip install python-memcached
(二)在django項目中使用緩存
配置settings.py
找到全局settings.py文件
粘貼過來並修改
使用
1.在視圖中使用
2.在路由中使用緩存
3.在中間件中使用
作用範圍:全局
4.頁面緩存
被cache標籤包起來的部分會被緩存下來
5.視圖內部數據的緩存
視圖
from django.core.cache import cache
def cache_test(request):
# 從緩存中提取數據
# 根據order_number獲取order_total
order_number = request.GET.get('order_number')
data = cache.get(order_number)
# 如果沒有,數據查詢,增加到緩存中
print('-----------------------')
if not data:
print('++++++++++++++++++++++')
payorder = PayOrder.objects.filter(order_number=order_number).first()
# 將數據寫入cache
cache.set(order_number,payorder.order_total,60)
data = payorder.order_total
return HttpResponse('order_total:%s'%data)
路由
兩次執行,控制檯返回的效果不同
說明第一次調用時緩存中沒有該數據,就進入了判斷,進行了數據庫查詢後,將數據存入緩存中。
第二次調用時,緩存中有該數據,沒有進入判斷,直接從緩存中取出了。