最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單了解django緩存方式及配置

 更新時(shí)間:2019年07月19日 11:08:48   作者:一路向北_聽(tīng)風(fēng)  
這篇文章主要介紹了簡(jiǎn)單了解django緩存概述及配置,由于Django是動(dòng)態(tài)網(wǎng)站,所有每次請(qǐng)求均會(huì)去數(shù)據(jù)進(jìn)行相應(yīng)的操作,當(dāng)程序訪問(wèn)量大時(shí),耗時(shí)必然會(huì)更加明顯,最簡(jiǎn)單解決方式是使用:緩存,需要的朋友可以參考下

前言

由于Django是動(dòng)態(tài)網(wǎng)站,所有每次請(qǐng)求均會(huì)去數(shù)據(jù)進(jìn)行相應(yīng)的操作,當(dāng)程序訪問(wèn)量大時(shí),耗時(shí)必然會(huì)更加明顯,最簡(jiǎn)單解決方式是使用:緩存,

1. 緩存的概述:

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

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

  • 開(kāi)發(fā)調(diào)試
  • 內(nèi)存
  • 文件
  • 數(shù)據(jù)庫(kù)
  • Memcache緩存(python-memcached模塊)
  • Memcache緩存(pylibmc模塊)

2.1 配置

開(kāi)發(fā)調(diào)試

# 此為開(kāi)始調(diào)試用,實(shí)際內(nèi)部不做任何操作
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 引擎
    'TIMEOUT': 300,            # 緩存超時(shí)時(shí)間(默認(rèn)300,None表示永不過(guò)期,0表示立即過(guò)期)
    'OPTIONS':{
     'MAX_ENTRIES': 300,          # 最大緩存?zhèn)€數(shù)(默認(rèn)300)
     'CULL_FREQUENCY': 3,          # 緩存到達(dá)最大個(gè)數(shù)之后,剔除緩存?zhèn)€數(shù)的比例,即:1/CULL_FREQUENCY(默認(rèn)3)
    },
    'KEY_PREFIX': '',            # 緩存key的前綴(默認(rèn)空)
    'VERSION': 1,             # 緩存key的版本(默認(rèn)1)
    'KEY_FUNCTION' 函數(shù)名           # 生成key的函數(shù)(默認(rèn)函數(shù)會(huì)生成為:【前綴:版本: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

內(nèi)存

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

 # 注:其他配置同開(kāi)發(fā)調(diào)試版本

文件

# 此緩存將內(nèi)容保存至文件
 # 配置:

  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': '/var/tmp/django_cache',
   }
  }
 # 注:其他配置同開(kāi)發(fā)調(diào)試版本

數(shù)據(jù)庫(kù)

# 此緩存將內(nèi)容保存至數(shù)據(jù)庫(kù)

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

 # 注:執(zhí)行創(chuàng)建表命令 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 應(yīng)用

全站使用

使用中間件,經(jīng)過(guò)一系列的認(rèn)證等操作,如果內(nèi)容在緩存中存在,則使用FetchFromCacheMiddleware獲取內(nèi)容并返回給用戶,當(dāng)返回給用戶之前,判斷緩存中是否已經(jīng)存在,如果不存在則UpdateCacheMiddleware會(huì)將緩存保存至緩存,從而實(shí)現(xiàn)全站緩存

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

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

單獨(dú)視圖緩存

方式一:
  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 %}
   緩存內(nèi)容
  {% endcache %}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python讀取Excel一列并計(jì)算所有對(duì)象出現(xiàn)次數(shù)的方法

    Python讀取Excel一列并計(jì)算所有對(duì)象出現(xiàn)次數(shù)的方法

    這篇文章主要給大家介紹了關(guān)于Python讀取Excel一列并計(jì)算所有對(duì)象出現(xiàn)次數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python使用uuid庫(kù)生成唯一標(biāo)識(shí)ID

    Python使用uuid庫(kù)生成唯一標(biāo)識(shí)ID

    這篇文章主要介紹了Python使用uuid模塊生成唯一標(biāo)識(shí)ID,需要的朋友可以參考下
    2020-02-02
  • 分析PyTorch?Dataloader報(bào)錯(cuò)ValueError:num_samples的另一種可能原因

    分析PyTorch?Dataloader報(bào)錯(cuò)ValueError:num_samples的另一種可能原因

    這篇文章主要介紹了分析PyTorch?Dataloader報(bào)錯(cuò)ValueError:num_samples的另一種可能原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 淺談TensorFlow之稀疏張量表示

    淺談TensorFlow之稀疏張量表示

    這篇文章主要介紹了淺談TensorFlow之稀疏張量表示,具有很好的參考就價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python Excel vlookup函數(shù)實(shí)現(xiàn)過(guò)程解析

    Python Excel vlookup函數(shù)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python Excel vlookup函數(shù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python基于Faker假數(shù)據(jù)構(gòu)造庫(kù)

    Python基于Faker假數(shù)據(jù)構(gòu)造庫(kù)

    這篇文章主要介紹了Python基于Faker假數(shù)據(jù)構(gòu)造庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python3實(shí)現(xiàn)ftp服務(wù)功能(客戶端)

    python3實(shí)現(xiàn)ftp服務(wù)功能(客戶端)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)ftp服務(wù)功能,客戶端的相應(yīng)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Python?提取出SQL語(yǔ)句中Where的值兩種方法(示例代碼)

    Python?提取出SQL語(yǔ)句中Where的值兩種方法(示例代碼)

    為了提取SQL語(yǔ)句中WHERE子句的值,我們可以利用Python的sqlparse庫(kù),這是一個(gè)專門用于解析SQL語(yǔ)句的庫(kù),這篇文章主要介紹了Python?提取出SQL語(yǔ)句中Where的值的方法,需要的朋友可以參考下
    2024-08-08
  • python缺失值填充方法示例代碼

    python缺失值填充方法示例代碼

    常見(jiàn)的數(shù)據(jù)缺失填充方式分為很多種,比如刪除法、均值法、回歸法、KNN、MICE、EM等,下面這篇文章主要給大家介紹了關(guān)于python缺失值填充方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號(hào)

    pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號(hào)

    這篇文章主要介紹了pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號(hào),文中補(bǔ)充介紹了DataFrame導(dǎo)CSV?txt?||?每行有雙引號(hào)的原因及解決辦法,感興趣的朋友跟隨小編一起看看吧
    2024-01-01

最新評(píng)論

三原县| 长沙市| 五常市| 洪洞县| 江达县| 富宁县| 寿光市| 深州市| 元谋县| 科技| 丰镇市| 高淳县| 华蓥市| 乳源| 西贡区| 永昌县| 沈阳市| 孟村| 渝中区| 德保县| 鄂伦春自治旗| 广元市| 苏州市| 厦门市| 饶阳县| 肥东县| 上杭县| 凭祥市| 桃园市| 磴口县| 谷城县| 简阳市| 武隆县| 绿春县| 文水县| 海兴县| 南平市| 成武县| 库车县| 甘孜县| 开平市|