中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django緩存方式及配置的示例分析

發布時間:2021-07-24 10:11:27 來源:億速云 閱讀:105 作者:小新 欄目:開發技術

這篇文章主要介紹django緩存方式及配置的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

前言

由于Django是動態網站,所有每次請求均會去數據進行相應的操作,當程序訪問量大時,耗時必然會更加明顯,最簡單解決方式是使用:緩存,

1. 緩存的概述:

緩存將一個某個views的返回值保存至內存或者memcache中,5分鐘內再有人來訪問時,則不再去執行view中的操作,而是直接從內存或者Redis中之前緩存的內容拿到,并返回。

2. Django中提供了6種緩存方式:

  • 開發調試

  • 內存

  • 文件

  • 數據庫

  • Memcache緩存(python-memcached模塊)

  • Memcache緩存(pylibmc模塊)

2.1 配置

開發調試

# 此為開始調試用,實際內部不做任何操作
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 引擎
    'TIMEOUT': 300,            # 緩存超時時間(默認300,None表示永不過期,0表示立即過期)
    'OPTIONS':{
     'MAX_ENTRIES': 300,          # 最大緩存個數(默認300)
     'CULL_FREQUENCY': 3,          # 緩存到達最大個數之后,剔除緩存個數的比例,即:1/CULL_FREQUENCY(默認3)
    },
    'KEY_PREFIX': '',            # 緩存key的前綴(默認空)
    'VERSION': 1,             # 緩存key的版本(默認1)
    'KEY_FUNCTION' 函數名           # 生成key的函數(默認函數會生成為:【前綴:版本:key】)
   }
  }


 # 自定義key
 def default_key_func(key, key_prefix, version):
  """
  Default function to generate keys.

  Constructs the key used by all other methods. By default it prepends
  the `key_prefix'. KEY_FUNCTION can be used to specify an alternate
  function with custom key making behavior.
  """
  return '%s:%s:%s' % (key_prefix, version, key)

 def get_key_func(key_func):
  """
  Function to decide which key function to use.

  Defaults to ``default_key_func``.
  """
  if key_func is not None:
   if callable(key_func):
    return key_func
   else:
    return import_string(key_func)
  return default_key_func

內存

# 此緩存將內容保存至內存的變量中
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    'LOCATION': 'unique-snowflake',
   }
  }

 # 注:其他配置同開發調試版本

文件

# 此緩存將內容保存至文件
 # 配置:

  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': '/var/tmp/django_cache',
   }
  }
 # 注:其他配置同開發調試版本

數據庫

# 此緩存將內容保存至數據庫

 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
    'LOCATION': 'my_cache_table', # 數據庫表
   }
  }

 # 注:執行創建表命令 python manage.py createcachetable

Memcache緩存(python-memcached模塊)

# 此緩存使用python-memcached模塊連接memcache

 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
   'LOCATION': '127.0.0.1:11211',
  }
 }

 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
   'LOCATION': 'unix:/tmp/memcached.sock',
  }
 } 

 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
   'LOCATION': [
    '172.19.26.240:11211',
    '172.19.26.242:11211',
   ]
  }
 }

Memcache緩存(pylibmc模塊)

# 此緩存使用pylibmc模塊連接memcache
 
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
   'LOCATION': '127.0.0.1:11211',
  }
 }

 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
   'LOCATION': '/tmp/memcached.sock',
  }
 } 

 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
   'LOCATION': [
    '172.19.26.240:11211',
    '172.19.26.242:11211',
   ]
  }
 }

Redis緩存(依賴:pip3 install django-redis)

from django_redis import get_redis_connection
conn = get_redis_connection("default")

2.2 應用

全站使用

使用中間件,經過一系列的認證等操作,如果內容在緩存中存在,則使用FetchFromCacheMiddleware獲取內容并返回給用戶,當返回給用戶之前,判斷緩存中是否已經存在,如果不存在則UpdateCacheMiddleware會將緩存保存至緩存,從而實現全站緩存

 MIDDLEWARE = [
  'django.middleware.cache.UpdateCacheMiddleware',
  # 其他中間件...
  'django.middleware.cache.FetchFromCacheMiddleware',
 ]

 CACHE_MIDDLEWARE_ALIAS = ""
 CACHE_MIDDLEWARE_SECONDS = ""
 CACHE_MIDDLEWARE_KEY_PREFIX = ""

單獨視圖緩存

方式一:
  from django.views.decorators.cache import cache_page

  @cache_page(60 * 15)
  def my_view(request):
   ...

 方式二:
  from django.views.decorators.cache import cache_page

  urlpatterns = [
   url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
  ]

局部視圖使用

a. 引入TemplateTag

  {% load cache %}

 b. 使用緩存

  {% cache 5000 緩存key %}
   緩存內容
  {% endcache %}

以上是“django緩存方式及配置的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武穴市| 芦山县| 大关县| 香港| 胶南市| 江油市| 三原县| 清涧县| 和平县| 琼海市| 柳州市| 芜湖市| 莎车县| 浦江县| 高淳县| 荃湾区| 偃师市| 青海省| 从化市| 岳普湖县| 资中县| 定州市| 威海市| 英超| 科技| 屯留县| 扎赉特旗| 阿克苏市| 来安县| 新化县| 周至县| 广安市| 巩留县| 洛南县| 丁青县| 阳泉市| 贡觉县| 汨罗市| 洪江市| 本溪市| 德阳市|