使用文件缓存

#settings.py
 

CACHES = {

 

'default': {

 

'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',

 

'LOCATION': '/var/tmp/django_cache',

 

'TIMEOUT': 3600,

 

'OPTIONS': {

 

'MAX_ENTRIES': 1000

 

}

 

}

 

}

全站缓存

 

#settings.py

 

CACHE_MIDDLEWARE_ALIAS = "default"

 

CACHE_MIDDLEWARE_SECONDS = 300

 

CACHE_MIDDLEWARE_KEY_PREFIX = '站点名'

 
 

MIDDLEWARE_CLASSES = (

 

'django.middleware.cache.UpdateCacheMiddleware',

 

'django.middleware.common.CommonMiddleware',

 

'django.middleware.cache.FetchFromCacheMiddleware',

 

)

用户页面

用户信息页面在登出后不能继续用缓存页面, 而要刷新

使用@vary_on_cookie装饰器

 

from django.views.decorators.vary import vary_on_cookie

 

from django.contrib.auth.decorators import login_required

 
 

@login_required(login_url="/login/")

 

@vary_on_cookie

 

def profile(request):

 

# do something here...

 

return HttpResponse(...)

页面级缓存

 

from django.views.decorators.cache import cache_page,cache_control

 
 

@cache_page(60*5)

 

@cache_control(must_revalidate=True,max_age=60*5)

 

def profile(request):

 

# do something here...

 

return HttpResponse(...)

基于类的视图缓存

 

from django.views.decorators.cache import cache_page,cache_control

 

from app.views import *

 
 

urlpatterns = [

 

url(r'^$',cache_page(60*5)(cache_control(must_revalidate=True,max_age=60*5)(IndexView.as_view()),name="index")),

 

]

刷新缓存

 

from django.core.cache import cache

 

from django.http import HttpRequest

 

from django.utils.cache import get_cache_key

 
 

def expire_page(request,path):

 

# The cache of request url after 'expire/' will be deleted,

 

# so you will get a fresh page !

 

request2 = HttpRequest()

 

request2.META['SERVER_NAME'] = request.META['SERVER_NAME']

 

request2.META['SERVER_PORT'] = request.META['SERVER_PORT']

 

request2.path = request.get_host()+'/'+path

 

print request2.build_absolute_uri()

 

key = get_cache_key(request2)

 

if cache.has_key(key):

 

cache.delete(key)

 

return HttpResponse("OK, the cache is refreshed")

本质上是利用HttpRequest伪造了一个与想要清除缓存的URL地址相同的请求,通过get_cache_key这个函数生成cache_key,然后删除对应的cache,达到刷新页面的效果。函数可以进一步改进至用户前台输入path,然后清除缓存后通过Ajax返回成功信息...

django的cache的更多相关文章

  1. Django’s cache framework

    小结: 1.缓存存储位置:数据库.文件系统.内存 2.通过缓存前缀实现跨服务器缓存 Django’s cache framework | Django documentation | Django h ...

  2. 使用Django.core.cache操作Memcached导致性能不稳定的分析过程

    使用Django.core.cache操作Memcached导致性能不稳定的分析过程 最近测试一项目,用到了Nginx缓存服务,那可真是快啊!2Gb带宽都轻易耗尽. 不过Api接口无法简单使用Ngin ...

  3. Django 缓存 cache基本使用

    1.设置setting REDIS_HOST = '10.133.3.26' REDIS_POST = 6379 REDIS_DATABASE = 3 REDIS_PASSWORD = '' CACH ...

  4. 使用django 的cache设置token的有效期

    from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import A ...

  5. Redis+Django(Session,Cookie、Cache)的用户系统

    转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一 ...

  6. Django学习之十二:Cache 缓存组件

    目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...

  7. Django Cache缓存系统学习--数据库缓存

    Django是动态网站,用户每一次请求页面,服务器都会执行以下操作:数据库查询.渲染模版.执行业务逻辑,最后生成用户可查看的页面.当访问量比较大的时候,会消耗掉大量的资源,这时候就会考虑到缓存问题. ...

  8. Django Cache缓存系统介绍及Memcached使用

    在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面. 这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了. 缓存就是为了 ...

  9. django自带的cache

    cache语法 from django.core.cache import cache #存入内存 cache.set("aaa",123) #从内存中获取 cache.get(& ...

随机推荐

  1. 利用Graphviz 可视化GO 数据库

    GO是一个同源蛋白的数据库,按照三大类别BP(生物学过程), MF(分子功能), CC(细胞组分) 对基因的产物-蛋白质进行了分类: 在GO数据库中,本质上是一个有向无环图的数据结构,在三大类别之下, ...

  2. Linux配置防火墙,开启80port、3306port 可能会遇到的小问题

     vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(同意80端口通 ...

  3. 详解JQuery Ajax 在asp.net中使用总结

    自从有了JQuery,Ajax的使用变的越来越方便了,但是使用中还是会或多或少的出现一些让人短时间内痛苦的问题.本文暂时总结一些在使用JQuery Ajax中应该注意的问题,如有不恰当或者不完善的地方 ...

  4. 分享一句话的同时说说遍历map的常用方法

    最近在网上看到一句话,鄙人觉得这是比较经典的一句话,首先要给大家分享哈: 当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及. Map<String, String ...

  5. Mysql全文搜索match against的用法

    全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE ...

  6. lua知识点整理

    1. lua全局环境和局部环境 local cf = loadstring(" local i=0 i=i+1 print(i) ") --从后面两个输出我们可以看出,生成的函数的 ...

  7. ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载

    ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...

  8. go的临时对象池--sync.Pool

    作者:bigtom链接:https://www.jianshu.com/p/2bd41a8f2254來源:简书   一个sync.Pool对象就是一组临时对象的集合.Pool是协程安全的. Pool用 ...

  9. java基础---->Java中枚举的使用(一)

    这里介绍一下java中关于枚举的使用. java中枚举的使用 一.枚举中可以定义方法 参照于TimeUnit的使用,TimeUnit.MILLISECONDS.sleep(1000); LoveUti ...

  10. android基础---->摄像头与相册的调用

    很多应用程序都可能会使用到调用摄像头拍照和从相册选取图片的功能,今天我们开始android中摄像头与相册调用的学习. 目录导航 调用摄像头拍照 从相册中选择照片 友情链接 调用摄像头拍照 大致流程:调 ...