Django Memcached和Ajax请求 [英] django memcached and ajax requests

查看:64
本文介绍了Django Memcached和Ajax请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为我的Django应用程序设置了memcached(unix套接字).但是,似乎在打开memcached时某些ajax请求无法正常工作.我在整个网站上都使用了memcached.

I have setup memcached (unix socket) for my django application. However it seems that some ajax requests do not work, as expected, while memcached is on. I am using memcached on my entire site.

例如,在此javascript函数中, .load()指令首次运行,但此后它会从缓存中获取"相同的页面.

For example in this javascript function the .load() directive works the first time, but after that it keeps 'fetching' the same page from cache.

function placeBet(user, bet) {
    var ajax_data = {
        status:false,
        message: ''
    }

    $.ajax({
        url:'/place_bet/' + user + '/?ajax=&bet=' + bet,
        type:"POST",
        dataType:"json",
        data:ajax_data,
        success:function (data){
            var message = "";
            $('#user_open_bets').load('/ob/' + user + '/?ajax=');
            if (data.status == false){
                alert(data.message);
            }
        } // success
    }); // ajax
}

如何强制这些ajax请求从数据库而不是从缓存重新加载?

How can I force those ajax request to reload from database instead from cache?

编辑.

这是我的 settings.py MIDDLEWARE类

This is my settings.py MIDDLEWARE classes

 MIDDLEWARE_CLASSES = (
     'django.middleware.cache.UpdateCacheMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'debug_toolbar.middleware.DebugToolbarMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     'main.common.tz_middleware.TimezoneMiddleware',
     'main.common.sslMiddleware.SSLRedirect',
     'django.middleware.cache.FetchFromCacheMiddleware',

推荐答案

似乎答案比我想象的要简单.我在Django文档中找到了解决方案.

It seems that the answer was simpler than I thought. I found the solution in the django docs.

https://docs.djangoproject.com/en/dev/topics/cache/#controlling-cache-using-other-headers

我复制粘贴(供其他人知道)

I copy paste (for other people to know)

from django.views.decorators.cache import never_cache

@never_cache
def myview(request):
    # ...

话虽如此,@ Alex的建议似乎很有趣,我想尝试一下.但是,由于迁移原因,现在我的服务器已关闭.我要等几个小时.稍后我将在这里报告.

Having said that, @Alex's suggestion seems interesting and I would like to try it. However now my server is down for migration reasons. I need to wait for some hours. I will report here, later.

这篇关于Django Memcached和Ajax请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆