如何防止Django测试服务器中的HTTP 304
-
02-10-2019 - |
题
我在django有几个项目,时不时地在一个和彼此之间进行交替。他们都有一个 /媒体 /路径,这是由 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等)吗?
解决方案
您可以为此滚动自己的中间件:
class NoIfModifiedSinceMiddleware(object):
def process_request(self, request):
request.META.pop('HTTP_IF_MODIFIED_SINCE', None)
基本上,它只是从请求中删除了HTTP_IF_MODIFIED_SINCE HEADER。
事后:或者您可以 django.views.static.serve
并更换 was_modified_since
一个函数,总是返回 True
.
不隶属于 StackOverflow