我在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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top