日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

缓存cache

發布時間:2025/3/8 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 缓存cache 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于Django是動態網站,所有每次請求均會去數據進行相應的操作,當程序訪問量大時,耗時必然會更加明顯,最簡單解決方式是使用:緩存,緩存將一個某個views的返回值保存至內存或者memcache中,5分鐘內再有人來訪問時,則不再去執行view中的操作,而是直接從內存或者Redis中之前緩存的內容拿到,并返回。

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

  • 開發調試
  • 內存
  • 文件
  • 數據庫
  • Memcache緩存(python-memcached模塊)
  • Memcache緩存(pylibmc模塊)

配置

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】) }}# 自定義keydef default_key_func(key, key_prefix, version):"""Default function to generate keys.Constructs the key used by all other methods. By default it prependsthe `key_prefix'. KEY_FUNCTION can be used to specify an alternatefunction 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_funcelse:return import_string(key_func)return default_key_func

?2.內存

# 此緩存將內容保存至內存的變量中# 配置:CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache','LOCATION': 'unique-snowflake',}}# 注:其他配置同開發調試版本

?

?3.文件

# 此緩存將內容保存至文件# 配置: CACHES = {'default': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache','LOCATION': '/var/tmp/django_cache',}}# 注:其他配置同開發調試版本

?

?

?

4.數據庫

# 此緩存將內容保存至數據庫# 配置:CACHES = {'default': {'BACKEND': 'django.core.cache.backends.db.DatabaseCache','LOCATION': 'my_cache_table', # 數據庫表 }}# 注:執行創建表命令 python manage.py createcachetable

?

?5.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',]}} python-memcached模塊

?

?6.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',]}} pylibmc模塊

?

7.?Redis緩存(依賴:pip3 install django-redis

CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient","CONNECTION_POOL_KWARGS": {"max_connections": 100}# "PASSWORD": "密碼", }} }
from django_redis import get_redis_connection 視圖中連接并操作 conn = get_redis_connection("default")

?

應用

1.全站使用緩存

使用中間件,經過一系列的認證等操作,如果內容在緩存中存在,則使用FetchFromCacheMiddleware獲取內容并返回給用戶,當返回給用戶之前,判斷緩存中是否已經存在,如果不存在則UpdateCacheMiddleware會將緩存保存至緩存,從而實現全站緩存MIDDLEWARE = ['django.middleware.cache.UpdateCacheMiddleware',# 其他中間件...'django.middleware.cache.FetchFromCacheMiddleware',]CACHE_MIDDLEWARE_ALIAS = ""CACHE_MIDDLEWARE_SECONDS = ""CACHE_MIDDLEWARE_KEY_PREFIX = ""

?2.單獨視圖緩存

方式一:from django.views.decorators.cache import cache_page@cache_page(60 * 15)def my_view(request):...方式二:from django.views.decorators.cache import cache_pageurlpatterns = [url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),]

?

from django.views.decorators.cache import cache_page@cache_page(10) #緩存10秒 def cache(request):import timetime=time.time()return render(request,'cache.html',{'time':time,})配置settings CACHES = { # 'default': { # 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 'LOCATION': os.path.join(BASE_DIR,'cache'), # } # } 示例

?

3.局部視圖使用

a. 引入TemplateTag{% load cache %}b. 使用緩存{% cache 5000 緩存key %}緩存內容{% endcache %}

?

{% load cache %} <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><h1>{{ time }}</h1> <h1>{{ time }}</h1>{% cache 10 c1 %} <h1>{{ time }}</h1> {% endcache %}</body> </html> 示例

?

?

?

轉載于:https://www.cnblogs.com/sunhao96/p/8965875.html

總結

以上是生活随笔為你收集整理的缓存cache的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚州综合视频 | 撒尿free性hd | 嫩草网站在线观看 | 男人插女人下面视频 | 亚洲精品动漫在线观看 | 久久久久久久久国产精品 | 国产精品视频网 | 欧美三级网 | 国产剧情一区 | 一区二区av电影 | 国产精品网页 | 白嫩初高中害羞小美女 | 国产精品第72页 | 中文字幕日韩一区二区三区不卡 | www.黄色国产 | 麻豆一二三区 | 中文精品一区二区三区 | 色婷婷aⅴ一区二区三区 | 国产一区免费看 | 欧美一区二区福利视频 | 国产农村老头老太视频 | 中国黄色录像 | 丰满人妻一区二区三区免费 | 欧美日韩人妻精品一区在线 | 人人妻人人澡人人爽久久av | 美女三级网站 | 上原亚衣av一区二区三区 | 久草青青草 | 亚洲av无码日韩精品影片 | 国产网站免费看 | 国产色在线| 中文字幕高清在线免费播放 | 久久精品亚洲精品 | 新婚若妻侵犯中文字幕 | 国产美女主播视频 | 欧洲熟妇的性久久久久久 | 波多野一区二区 | 337p粉嫩大胆色噜噜狠狠图片 | 久久精品日 | 蜜臀久久精品久久久用户群体 | 中文国产在线观看 | 日本妈妈3| 亚洲精品一区二区三区蜜桃久 | 黄色美女一级片 | 成人性生交大片免费看vrv66 | 精品国产av一区二区 | av色在线观看| www.在线视频 | va在线播放| 男人天堂v| 天天干天 | 污视频免费在线观看网站 | 黄色小视频网 | 精品久久久久中文慕人妻 | 天天cao在线 | 国产三区视频 | 高级家教课程在线观看 | 亚洲美女影院 | 欧美调教视频 | 亚洲一区二区不卡视频 | 五月婷婷丁香花 | 国产人人看 | 99热97| 一区二区三区在线免费视频 | 精品国产99久久久久久 | 91精品国产亚洲 | 久久精品资源 | 波多野结衣一区二区三区中文字幕 | 欧美黄色成人 | 国产cao | 久久网站免费看 | 国产精品区在线观看 | 日本午夜影视 | 午夜精品福利一区二区三区蜜桃 | 91这里只有精品 | 日韩中文字 | 色一情一交一乱一区二区三区 | 99热1| 日本黄网免费 | 婷婷亚洲视频 | 欧洲亚洲一区二区 | 女同另类之国产女同 | 国产高清av在线 | 国产成人综合久久 | 国产伦精品一区二区三区免费 | 波多野结衣一区 | 久草午夜 | 国产精品一区无码 | 午夜三级在线观看 | 67194成人在线 | 狠狠躁夜夜躁 | 国产一级大片在线观看 | 免费在线a| 日本高清有码 | 成年人在线观看网站 | 日日夜夜爱爱 | 国产精品二区在线 | 午夜污 | 亚洲综合视频在线 |