2008-09-24 17 views
8

Ho URL del modulo http://domain/image/⟨uuid⟩/42x42/some_name.png. Il server Web (nginx) è configurato per cercare un file /some/path/image/⟨uuid⟩/thumbnail_42x42.png e, se non esiste, invia l'URL al back-end (Django via mod_wsgi) che quindi genera la miniatura. Quindi il backend emette un reindirizzamento 302 esattamente allo stesso URL richiesto dal client, con l'idea che su questa seconda richiesta il server noterà il file di anteprima e lo invierà direttamente.È sicuro reindirizzare allo stesso URL?

La domanda è: funzionerà con tutti i browser? Finora i test non hanno mostrato problemi, ma posso essere sicuro che tutti i programmi utente interpreteranno ciò come previsto?

Aggiornamento: Vorrei chiarire l'intento. Attualmente questo funziona come segue:

  1. Il client richiede una miniatura di un'immagine.
  2. Il server vede che il file non esiste, quindi inoltra la richiesta al back-end.
  3. Il backend crea la miniatura e restituisce 302.
  4. Il backend rilascia tutte le risorse, consentendo al server di condividere il file appena generato con i client attuali e successivi.

Avere il backend servire l'immagine appena creata è peggio per due motivi:

  1. Due modi di servire gli stessi dati devono essere creati;
  2. Il server è molto meglio a servire contenuto statico. Cosa succede se il client ha un collegamento estremamente lento? Il backend non è particolarmente veloce né efficiente in termini di memoria, e tenerlo in memoria mentre l'alimentazione del client può essere uno spreco.

Quindi tengo il backend in funzione per il periodo di tempo minimo.

Aggiornamento²: Apprezzerei molto alcuni riferimenti o opinioni RFC di qualcuno con esperienza con molti browser. Tutte quelle risposte affermative sono piacevoli ma sembrano un po 'infondate.

risposta

1

In caso contrario, il cliente è guasto. La maggior parte dei clienti seguirà loop di reindirizzamento fino a un valore massimo. Quindi sì, dovrebbe andare bene fino a quando il tuo back-end non genera la miniatura per nessun motivo.

Si potrebbe invece cambiare gli URL di essere http://domain/djangoapp/generate_thumbnail e che torneremo la miniatura e il corretto tipo di contenuto e così via

0

Sì, va bene per reindirizzare allo stesso URI come lo siete stati in precedenza.