如何防止Django测试服务器中的HTTP 304

时间:2010-04-28 14:20:05

标签: django caching http-status-code-304

我在Django有几个项目,偶尔在一个和另一个之间交替。所有这些都有/ media / path,由 django.views.static.serve 提供,并且它们都有 /media/css/base.css 文件

问题是,每当我运行一个项目时,对 base.css 的请求都会返回HTTP 304(未修改),可能是因为时间戳没有改变。但是当我运行另一个项目时,返回相同的304,使浏览器使用前一个项目缓存的文件(因此,使用错误的样式表)。

仅供记录,以下是中间件类:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
)

我总是使用默认地址http://localhost:8000。 是否有另一种解决方案(除了使用不同的端口 - 8001,8002等)?

1 个答案:

答案 0 :(得分:11)

您可以为此推出自己的中间件:

class NoIfModifiedSinceMiddleware(object):
    def process_request(self, request):
        request.META.pop('HTTP_IF_MODIFIED_SINCE', None)

基本上,它只是从请求中删除了HTTP_IF_MODIFIED_SINCE标头。

事后补充:或者你可以monkeypatch django.views.static.serve并将was_modified_since函数替换为一个,它始终返回True