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

aug*_*men 6 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',
)
Run Code Online (Sandbox Code Playgroud)

我总是使用默认地址http:// localhost:8000.还有其他解决方案(除了使用不同的端口 - 8001,8002等)?

ale*_*asi 11

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

class NoIfModifiedSinceMiddleware(object):
    def process_request(self, request):
        request.META.pop('HTTP_IF_MODIFIED_SINCE', None)
Run Code Online (Sandbox Code Playgroud)

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

事后的想法:或者你可以通过monkeypatch django.views.static.serve和替换was_modified_since函数,它总是返回True.