8

私はDjangoにいくつかのプロジェクトを持っており、時々交互にプロジェクトを行っています。それらはすべて、 django.views.static.serveによって提供される/ media /パスを持ち、それらはすべて/media/css/base.cssファイルを持っています。

問題は、1つのプロジェクトを実行するたびに、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_sinceTrue

于 2010-04-28T21:27:55.520 に答える