学习网站开发思路,wordpress wp-login.php,公司设计效果图,wordpress 显示点击数一、缓存由于Django是动态网站#xff0c;所有每次请求均会去数据进行相应的操作#xff0c;当程序访问量大时#xff0c;耗时必然会更加明显#xff0c;最简单解决方式是使用#xff1a;缓存#xff0c;缓存将一个某个views的返回值保存至内存或者memcache中#xff0c…一、缓存由于Django是动态网站所有每次请求均会去数据进行相应的操作当程序访问量大时耗时必然会更加明显最简单解决方式是使用缓存缓存将一个某个views的返回值保存至内存或者memcache中5分钟内再有人来访问时则不再去执行view中的操作而是直接从内存或者memcache中之前缓存的内容拿到并返回。Django中提供了6种缓存方式开发调试内存文件数据库Memcache缓存(python-memcached模块)Memcache缓存(pylibmc模块)1、配置a、开发调试#此为开始调试用实际内部不做任何操作#配置CACHES {default: {BACKEND: django.core.cache.backends.dummy.DummyCache, #引擎TIMEOUT: 300, #缓存超时时间(默认300None表示永不过期0表示立即过期)OPTIONS:{MAX_ENTRIES: 300, #最大缓存个数(默认300)CULL_FREQUENCY: 3, #缓存到达最大个数之后剔除缓存个数的比例即1/CULL_FREQUENCY(默认3)},KEY_PREFIX: , #缓存key的前缀(默认空)VERSION: 1, #缓存key的版本(默认1)KEY_FUNCTION 函数名 #生成key的函数(默认函数会生成为【前缀:版本:key】)}}#自定义keydefdefault_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)defget_key_func(key_func):Function to decide which key function to use.Defaults to default_key_func.if key_func is notNone:ifcallable(key_func):returnkey_funcelse:returnimport_string(key_func)return default_key_funcView Codeb、内存#此缓存将内容保存至内存的变量中#配置CACHES {default: {BACKEND: django.core.cache.backends.locmem.LocMemCache,LOCATION: unique-snowflake,}}#注其他配置同开发调试版本View Codec、文件#此缓存将内容保存至文件#配置CACHES{default: {BACKEND: django.core.cache.backends.filebased.FileBasedCache,LOCATION: /var/tmp/django_cache,}}#注其他配置同开发调试版本View Coded、数据库#此缓存将内容保存至数据库#配置CACHES {default: {BACKEND: django.core.cache.backends.db.DatabaseCache,LOCATION: my_cache_table, #数据库表}}#注执行创建表命令 python manage.py createcachetableView Codee、Memcache缓存(python-memcached模块)#此缓存使用python-memcached模块连接memcacheCACHES{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,]}}View Codef、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,]}}View Code2、应用- cache_page(15) #超时时间为15秒这15秒是暂存的状态当过了15秒又是新状态了a. 全站使用使用中间件经过一系列的认证等操作如果内容在缓存中存在则使用FetchFromCacheMiddleware获取内容并返回给用户当返回给用户之前判断缓存中是否已经存在如果不存在则UpdateCacheMiddleware会将缓存保存至缓存从而实现全站缓存MIDDLEWARE[django.middleware.cache.UpdateCacheMiddleware,#其他中间件...django.middleware.cache.FetchFromCacheMiddleware,]CACHE_MIDDLEWARE_ALIAS CACHE_MIDDLEWARE_SECONDS CACHE_MIDDLEWARE_KEY_PREFIX View Codeb. 单独视图缓存方式一from django.views.decorators.cache importcache_pagecache_page(60 * 15)defmy_view(request):...方式二from django.views.decorators.cache importcache_pageurlpatterns[url(r^foo/([0-9]{1,2})/$, cache_page(60 * 15)(my_view)),]View Codec、局部模板使用a. 引入TemplateTag{% load cache %}b. 使用缓存{% cache 5000 缓存key %}缓存内容{% endcache %}View Code