8

我在 Django 中有几个项目,并且时不时地在一个和另一个之间交替。它们都有一个 /media/ 路径,由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 等)?

4

1 回答 1

11

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

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

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

事后思考:或者你可以用猴子补丁django.views.static.serve和替换was_modified_since函数,它总是返回True

于 2010-04-28T21:27:55.520 回答