django中的缓存
对于一个动态网站来说,用户的每次访问都意味着对服务器的一次开销,当该服务器的并发访问非常大时,对于一个动态网站来说,开销会非常的大。所以对于大中型web应用来说,减轻服务器的性能瓶颈就很有必要
对于django来说,cache就提供了一种解决方式
通俗的讲,缓存就是把一些非敏性,对实时性要求不高的数据从我们的后台数据库取到数据后,将之保存到文件或内存或者我们的一轻高性能的中间件系统中,当用户再次请求时,将直接从中间件或者文件,内存中取出该 数据,将不再对数据库或其它关键应用再次请求以缓解对流量对性能造成的影响
在django中支持的缓存方式有:内存缓存,数据库缓存,文件缓存以及memcache缓存和虚拟缓存(仅用于开发时)
在实际的应用中常用的方式有:内存缓存,文件缓存,以及memcache缓存
对于使用不同的cache模块,需要在settings.py中文件中做不同的配置,以文件缓存为例
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': os.path.join(BASE_DIR,'cache')
}
}
在django中缓存可以在Views视图处理函数中与templates中使用,如下所示:
import time from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.cache import cache_page
from django.core.cache import cache def cachedemo1(request):
t=time.time()
return render(request, 'app02/cachedemo.html', {'time':t})
在以上代码中返回了一个时间戳
在相应的html文件中的代码如下所示: {% load cache %}
{% cache 10 c %}
{{ time }}
{% endcache %}
要在页面中使用缓存,必须在页面中使用标签{% load cache %}的方式导入cache
{% cache 10 c %}
{{ time }}
{% endcache %}
以上代码的功能便是,在一个名为c的缓存块中将{{time}}的值缓存10秒钟
如果要在视图中应用缓存的话,需要在视图中使用cache_page(10)装饰器,10为时间,默认为秒
如下所示:
@cache_page(10)
def cachedemo1(request):
t=time.time()
return render(request, 'app02/cachedemo.html', {'time':t}) 使用硬编码方式使用cache
def add_CacheByhardCode(key,value,timeout):
'''
使用add方法添加cache
:param key:
:param value:
:param timeout:
:return:
'''
cache.add(key=key,value=value,timeout=timeout)
return True
def set_CacheByhardCode(key,value,timeout):
cache.set(key=key,value=value,timeout=timeout)
return True
def has_cache(key):
obj=cache.has_key(key=key)
return obj
def delete_cache(key):
cache.delete(key=key)
return True
def get_or_set_cache(key,value,timeout):
cache.get_or_set(key=key,default=value,timeout=timeout)
return True
def get_CacheByKey(key):
obj=cache.get(key)
return obj def setCacheByHardCode(request):
#isok=add_CacheByhardCode('username','hello',10)
isok=get_or_set_cache('username','hello world',10)
if isok:
username=get_CacheByKey('username')
print(username)
if username:
return render(request, 'app02/cachedemo.html', {'username':username})
return HttpResponse('ok')
django中的缓存的更多相关文章
- Django中的缓存(内存,文件,redis)
一.Django中的缓存的几种方法 1)单个视图缓存.时间测试 import time from django.views.decorators.cache import cache_page @ca ...
- Django 中的缓存问题
Django 中的缓存问题 简单介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的 ...
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)
一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...
- django中的缓存以及跨域
django中的缓存 先来了解以下问题
- Django中的缓存基础知识
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- Django中使用缓存
settings中的配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache ...
- django中的缓存 跨域问题(同源策略)
django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...
- Django中的缓存机制
概述 对于中等流量网站来说,尽可能的减少开销是必要的.缓存数据就是为了保存那些需要很多计算资源大的结果,这样的的话就不必在下次重复消耗计算资源. Django自带了一个健壮的缓存系 ...
- Django实现内容缓存
1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会 ...
随机推荐
- 微信企业号发送监控消息【php】
公司这边有做监控异常并将消息发送到企业公众号的功能.大概如下: 定时任务检测异常消息 将消息存入redis队列 定时处理队列异常消息 发送到微信企业号对应的部门组 这里我们来看一下微信发送过程,其他不 ...
- Stacking方法详解
集成学习方法主要分成三种:bagging,boosting 和 Stacking.这里主要介绍Stacking. stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略. 首 ...
- HTTP报文语法/HTTP组成
一.HTTP报文分类:请求报文和响应报文 请求报文会向Web服务器请求一个动作,响应报文会将请求的结果返回给客户端 请求报文格式: <method> <request-UR ...
- multiprocessor(下)
一.数据共享 展望未来,基于消息传递的并发编程是大势所趋即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分 ...
- Linux之Ubuntu系统安装搜狗输入法
如何在Ubuntu系统中安装搜狗输入法? 1.第一步 下载搜狗输入法文件for Linux 2.检查更新 update 如果没有更新的话,需要做这一步 3.语言支持 选择fcitx,然后关闭界面 4 ...
- php 逐行读取文本文件
在读取文本时,我们要注意一个事情,那就是换行符,应为我们在写文档时会手动换行,这个换行符需不需要保存就要看自己的需求了. 这里封装了两个方法,一个保留换行,一个不保留.$path为文件路径+文件名 1 ...
- leetcode-374-Guess Number Higher or Lower(二分查找)
题目描述: We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have t ...
- 50.RocketMQ (quickstart)
要多给下属表功,绝不能抢功. 1.订阅消息 /** * Copyright (C) 2010-2013 Alibaba Group Holding Limited * * Licensed under ...
- elment 中 el-table 进行校验
脑洞大开:什么是展示数据最好的方式呢,表格,写得又快,又清晰,又明显,那么就积累一些工作中表格经常使用到的东西. 第一步:效果图: 第二步:举个例子: <template> <div ...
- C#常用字符串总结
字符串基础<一> static void Main(string[] args) { string str1 = "I Love You"; string str2 = ...