1. 程式人生 > >django的快取框架

django的快取框架

   可以使用的快取方式:    1.可以使用Memcached作為快取  --- 記憶體,分散式 ,老---新redis(預設不支援)     2.可以使用資料庫進行快取 ---- 資料量大,效率低    3.可以使用檔案快取 --- 使用不方便,效率低    4.使用本地記憶體進行快取            **5.可以接入其他儲存方式 --- redis 記憶體,效率高

4.資料庫快取的使用:          1.在setting中配置快取資料庫:          CACHES = {             'default': {             'BACKEND': 'django.core.cache.backends.db.DatabaseCache',             'LOCATION': 'my_cache_table',             }         }                     LOCATION用來指定快取資料庫表的名字

      2.執行 python manage.py  createcachetable   會自動的資料庫建立快取表                3.使用:           直接在需要快取的檢視函式上加上裝飾器即可:            如: @cache_page(60) def testCache(request):     django會自動快取該檢視函式對應的html, ()中的引數表示快取多長時間之後過期,單位秒         如果沒有快取會完整的載入資料,如果有快取資料,直接就載入快取資料           多個url指向同一檢視函式.            每個檢視快取(如每個站點快取)都是從URL鍵入的。    如果多個URL指向同一檢視,則每個URL將單獨快取。    繼續該my_view示例,如果您的URLconf看起來像這樣:

        urlpatterns = [             path('foo/<int:code>/', my_view),         ]                5.自定義快取           存,取          # 自定義快取     def testCache(request):     #     判斷快取中是否有資料     #    從快取中取資料,獲取到快取內容         cacheTest = cache.get("testcachehtml")         if cacheTest:#有資料--直接響應         return HttpResponse(cacheTest)         else:#沒有資料,--載入並存到快取中區         time.sleep(8)         tem = loader.get_template("testCache.html")         strHtml = tem.render()         # 儲存到快取中去         cache.set("testcachehtml",strHtml,60)

        return  HttpResponse(strHtml)

     7.使用redis資料庫作為快取資料庫 --快                   1.安裝對應的模組                pip install django-redis2.在setting中配置             CACHES = {                 "default": {                 "BACKEND": "django_redis.cache.RedisCache",                 "LOCATION": "redis://127.0.0.1:6379/1",                 "OPTIONS": {                     "CLIENT_CLASS": "django_redis.client.DefaultClient",                 }                 }             }

                 3.使用redis快取             與上面資料庫快取一樣的用法             直接在需要快取的檢視函式上加上裝飾器即可:               如: @cache_page(60)             def testCache(request):             django會自動快取該檢視函式對應的html, ()中的引數表示快取多長時間之後過期,單位秒               如果沒有快取會完整的載入資料,如果有快取資料,直接就載入快取資料             4.注意:使用redis儲存,需要啟動redis服務,否則會報資料連線錯誤           啟動redis                 5.測試:             select 1 切換庫             keys * 檢視所有             get key  獲取某個值

        8.快取資料庫的配置         常用配置:              TIMEOUT:用於快取的預設超時(以秒為單位)。此引數預設為300秒(5分鐘)。您可以設定TIMEOUT為None預設情況下快取鍵永不過期。值0使得鍵立即過期(實際上“不快取”)。                  OPTIONS中--- MAX_ENTRIES:刪除舊值之前快取中允許的最大條目數。此引數預設為300。