拨付网站建设经费的请示,廊坊cms建站模板,宁波 seo排名公司,一般通过路人什么梗由于Django是动态网站#xff0c;所有每次请求均会去数据进行相应的操作#xff0c;当程序访问量大时#xff0c;耗时必然会更加明显#xff0c;最简单解决方式是使用#xff1a;缓存#xff0c;缓存将一个某个views的返回值保存至内存或者memcache中#xff0c;5分钟内…由于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, # 缓存超时时间默认300None表示永不过期0表示立即过期OPTIONS:{MAX_ENTRIES: 300, # 最大缓存个数默认300CULL_FREQUENCY: 3, # 缓存到达最大个数之后剔除缓存个数的比例即1/CULL_FREQUENCY默认3},KEY_PREFIX: , # 缓存key的前缀默认空VERSION: 1, # 缓存key的版本默认1KEY_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模块连接memcacheCACHES {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_pagecache_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_pagecache_page(10) #缓存10秒
def cache(request):import timetimetime.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 langen
headmeta charsetUTF-8titleTitle/title
/head
bodyh1{{ time }}/h1
h1{{ time }}/h1{% cache 10 c1 %}
h1{{ time }}/h1
{% endcache %}/body
/html 示例 转载于:https://www.cnblogs.com/sunhao96/p/8965875.html