Django如何實現內容快取示例詳解

2023-03-19 01:40:37 字數 2190 閱讀 7822

前言

1.快取的簡介

在動態**中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.

當一個**的使用者訪問量很大的時候,每一次的的後臺操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.

快取是將一些常用的資料儲存記憶體或者memcache中,在一定的時間內有人來訪問這些資料時,則不再去執行資料庫及渲染等操作,而是直接從記憶體或memcache的快取中去取得資料,然後返回給使用者.

2.django提供了6種快取方式

經常使用的有檔案快取和mencache快取

2.1 各種快取方式的配置檔案說明

2.1程式設計客棧.1 開發除錯(此模式為開發除錯使用,實際上不執行任何操作)

settings.py檔案配置

caches = ,

}}2.1.2 記憶體快取(將快取內容儲存至記憶體區域中)

settings.py檔案配置

caches =

}}2.1.3 檔案快取(把快取資料儲存在檔案中)

settings.py檔案配置

caches =

}

}2.1.4 資料庫快取(把快取資料儲存在資料庫中)

settings.py檔案配置

caches =

}

}注意,建立快取的資料庫表使用的語句:

python manage.py createcachetable

memcached是django原生支援的快取系統.要使用memcached,需要**memcached的支援庫python-memcached或pylibmc.

2.1.5 memcache快取(使用python-memcached模組連線memcache)

settings.py檔案配置

caches =

}}location也可以配置成如下:

'location': 'unix:/tmp/memcached.sock', # 指定區域網內的主機名加socket套接字為memcache快取伺服器

'location': [ # 指定一臺或多臺其他主機ip地址加埠為memcache快取伺服器

'192.168.10.100:11211',

'192.168.10.101:11211',

'192.168.10.102:11211',

]2.1.6 memcache快取(使用pylibmc模組連線memcache)

settings.py檔案配置

caches = ,

} }location也可以配置成如下:

'location': '/tmp/memcached.sock', # 指定某個路徑為快取目錄

'location': [ # 分散式快取,在多臺伺服器上執行memcached程序,程式會把多臺伺服器當作一個單獨的快取,而不會在每臺伺服器上覆制快取值

'192.168.10.100:11211',

'192.168.10.101:11211',

'192.168.10.102:11211',

]memcached是基於記憶體的快取,資料儲存在記憶體中.所以如果伺服器宕機的話,資料就會丟失,所以memcached一般與其他快取配合使用

3.django中的快取應用

django提供了不同粒度的快取,可以快取某個頁面,可以只快取一個頁面的某個部分,甚至可以快取整個**.

3.1 單獨檢視快取

例子,為單個檢視函式新增快取

路由配置:

url(r'^index$',views.index),

資料庫views**:

from app01 import models

from django.views.decorators.cache import cache_page

import time

@cache_page(15) #超時時間為15秒

def index(request):

user_list=models.userinfo.objects.all() #從資料庫中取出所有的使用者物件

ctime=time.time() #獲取當前時間

return render(request,"index.html",)

index.html**:

body>

django實現消除快取

import json from django.shortcuts import render from django.http import jsonresponse from rest framework.decorators import api view from rest framewor...

web內容快取

1.把內容快取到磁碟上 1 某些框架模板的頁面快取功能,例如smarty,zend framework 快取等等 這些的缺點是你必須用到這些框架或是模板,這也會帶來一些效能的開銷。其實也可以自己寫個簡單的快取方法。2 直接將變化不是很頻繁的內容靜態化,定期更新,靜態檔案的請求速度和消耗資源都遠小於動...

動態內容快取

原文 什麼是動態內容快取?瀏覽器向伺服器傳送請求後,伺服器會根據瀏覽器的要求做相應的處理 如 資料庫操作 然後將處理後的結果注入jsp頁面生成html,最後將生成的html返回給瀏覽器顯示。我們知道,資料庫讀取操作是非常耗時的,如果能將每次請求中的資料庫處理時間去掉,那伺服器的相應速度將會大幅提升。...

PHP內容快取Yac

yac 是為php實現的一個基於共享記憶體,無鎖的內容cache wget unzip master.zip cd yac master phpize configure prefix usr local yac with php config usr local php bin php confi...

Django顯示部落格文章內容

一 編輯mysite blog views.py from django.shortcuts import render,get object or 404 from models import blogarticles 基於函式的檢視,這個函式叫檢視函式 函式的引數是request,這個引數負責響...

Django 實現模板分頁顯示內容

分頁 1 作用 資料載入優化 2 前端引入bootstrap樣式 引入分頁器 3 paginator 屬性 方法 常見錯誤 4 page pagenum 路由引數 使用者想要檢視第幾頁 def showblogs request,pagenum 查詢資料庫獲取所有博文 blogs blog.obje...

如何實現LRU快取方案

lru是least recently used 的縮寫,他的意思是 最近最少使用 lru快取就是用這種原理實現,簡單的說就是快取一定量的資料,當超過設定的閾值是就把一些過期的資料刪除掉。常用於頁面置換演算法,是虛擬頁式儲存管理中常用的演算法。from collections import deque...