Domanda

Ho un paio di progetti in Django e si alternano tra uno e l'altro di tanto in tanto. Tutti loro hanno una / media / percorso, che è servita da django.views.static.serve , tutti hanno un file e /media/css/base.css .

Il problema è che, ogni volta che corro un progetto, le richieste al base.css restituire un HTTP 304 (non modificati), probabilmente perché il timestamp non è cambiata. Ma quando ho eseguito l'altro progetto, lo stesso 304 viene restituito, rendendo il browser utilizza il file memorizzato nella cache dal progetto precedente (e quindi, utilizzando il foglio di stile sbagliato).

Per la cronaca, ecco le classi middleware:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
)

Ho sempre utilizzare l'indirizzo predefinito http: // localhost: 8000 . C'è un'altra soluzione (diversa utilizzando diverse porte -. 8001, 8002, ecc)?

È stato utile?

Soluzione

Si può rotolare il proprio middleware per questo:

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

In sostanza, rimuove solo HTTP_IF_MODIFIED_SINCE colpo di testa dalla richiesta.

Ripensamento:. Oppure si può monkeypatch django.views.static.serve e sostituire la funzione was_modified_since da colui, che restituisce sempre True

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top