2010-09-23 14 views
36

È OK restituire un codice 301/302/303 quando si restituisce una risorsa immagine? L'ho fatto in passato e sembra funzionare. È una buona pratica ed è compatibile con la maggior parte dei browser?OK per reindirizzare le immagini HTTP?

risposta

40

Sì, è possibile reindirizzare le immagini e browser seguirà reindirizzamenti. In genere, tuttavia, si desidera mantenere il reindirizzamento al minimo per motivi di prestazioni, poiché ogni reindirizzamento richiede una richiesta HTTP separata, che aggiunge l'overhead del server e aumenta leggermente il tempo di caricamento della pagina dell'utente finale.

L'unica cosa che dovresti assolutamente evitare è il reindirizzamento di molte immagini su una pagina. Ciò rallenterà notevolmente il tempo di caricamento della pagina, specialmente sulle reti a latenza elevata (ad esempio telefono, Cina, Internet via satellite) in cui ogni nuova richiesta HTTP richiede molto tempo. Inoltre, i client HTTP sono limitati a un numero limitato di connessioni HTTP simultanee per hostname del server, quindi anche su reti veloci finirai con un collo di bottiglia.

Reindirizzare 1 o 2 immagini su una pagina non è un grosso problema, tuttavia.

Se si reindirizzano le immagini e sono memorizzabili nella cache, è preferibile impostare un'intestazione Scadenza HTTP (e l'intestazione Cache-Control appropriata) per una data nel lontano futuro, quindi almeno nelle successive visite agli utenti della pagina non dovrà più passare attraverso il reindirizzamento.

Se il motivo per cui si sta reindirizzando è conforme a un nuovo schema URL, la maggior parte dei server Web ha un modo semplice per riscrivere gli URL sul server senza dover inviare un reindirizzamento effettivo al client. In altre parole, il client può richiedere /static/bar.jpg ma il server può essere configurato per tradurlo in /media/images/bar.jpg. Questo approccio di riscrittura degli URL è preferibile al reindirizzamento nella maggior parte dei casi, dal momento che è possibile refactoring dove il contenuto vive sul server senza incorrere nel sovraccarico di reindirizzamento sul lato client o server.

+0

Non sto sostenendo né 301 né riscritture, poiché è preferibile il progetto, ma volevo menzionare un'ulteriore considerazione sulla riscrittura. I riscrivi non sono gratuiti, richiedono un certo grado di risorse di elaborazione aggiuntive. In molte situazioni questo non è un problema, in quanto il consumo totale di risorse corrisponde a riscrivere la complessità e il numero di esecuzioni. Volevo solo assicurarmi che tutti comprendessero che entrambi i metodi hanno i loro costi, così come ogni potenziale soluzione. – TechZilla

6

Sì, funziona.

A proposito di buone pratiche, quali sono le alternative? Restituzione di una risposta di errore (404)? Non molto utile. Restituendo l'immagine che la risorsa reindirizzata sarebbe tornata? Probabilmente non è possibile, altrimenti non verrai reindirizzato. Risolvere i tag img con il nuovo URL? Certo, se possibile, ma forse vuoi che il browser esegua il reindirizzamento (forse un contatore).

6

E 'OK se il codice riflette in realtà la realtà - per esempio, se un'immagine ha infatti spostato permanenetly, si dovrebbe utilizzare un 301.

Problemi correlati