2009-09-26 3 views
18

Ho letto di "HTTP persistent connection" ma in qualche modo non riesco a capire cosa significa persistente in questo contesto.
Potresti elaborare?Che cosa significa esattamente una "connessione persistente"?

+2

Ciò che Caos intende è che la connessione tra client e server non viene chiusa dopo lo scambio di informazioni - lasciandola aperta per ulteriori comunicazioni. Questo è molto più veloce di stabilire una nuova connessione ogni volta che è necessario trasmettere informazioni. – NTDLS

risposta

18

Tutta la discussione fino ad ora è stata dal lato browser delle cose. Il browser prima richiede la pagina effettiva e analizza la pagina e scopre tutte le altre risorse di cui ha bisogno prima di poter eseguire il rendering di quella pagina. Il browser richiede queste risorse e altre risorse dipendenti una per una. Quindi mantenere una connessione persistente è molto efficiente qui, poiché si evita il sovraccarico di creazione e distruzione delle connessioni.

Ora dal lato del server Web, una connessione permanente potrebbe consentire di "inviare" il contenuto al browser web. Ora HTTP non supporta questo. Quindi, ci sono alcune soluzioni alternative con javascript in cui la pagina viene sostanzialmente aggiornata dopo un po '.

Si può vedere questo trucco essere utilizzato da molti provider di posta elettronica basati sul web che continuano a controllare in background per le nuove mail. Questo dà la sensazione che quando arriva una nuova mail, il server "spinge" la nuova notifica di posta al browser web. Ma in realtà, è in realtà il browser Web che continua a controllare il server per qualsiasi nuova posta.

Un altro punto che vorrei precisare è che in realtà non vediamo alcun aggiornamento della pagina a causa di un altro trucco che consente di aggiornare solo alcune parti specifiche della pagina. (SUGGERIMENTO: AJAX)

+0

Risposta molto informativa! –

+1

Se tengo aperta una connessione con un server web, il browser mostra continuamente una barra di caricamento? –

+1

Un browser Web mostrerà solo una barra di caricamento, se effettivamente richiede qualcosa. Le informazioni di background relative al fatto che una connessione sia aperta o meno non dovrebbero riflettersi nell'interfaccia utente del browser. – Trainee4Life

28

Significa che il server non chiude il socket una volta terminato di inviare la risposta (quindi la lunghezza della risposta deve essere diversamente indicata, tramite intestazioni o chunking), in modo che il client possa effettuare altre richieste sullo stesso zoccolo. Una pagina web richiede spesso diversi altri elementi (immagini, CSS, script, ...) sullo stesso server della pagina stessa, quindi riutilizzare il socket per alcune di queste ulteriori richieste allo stesso server può ridurre la latenza complessiva rispetto alla chiusura del presa originale e apertura di nuovi per tutte le richieste successive.

+1

Come darkassassin93 ha dichiarato che la connessione si estinguerà in caso di out.close() su un servlet. In questo caso, come possiamo implementare la connessione persistente HTTP su un server Tomcat Java? O dovremo utilizzare strumenti di terze parti per implementare questo? Un'altra domanda riguarda il lato client? –

+2

@Kevin, non hai il controllo del browser ("lato client"): stabilirà le sue politiche (puoi solo sperare che supporti "resta vivo", la maggior parte lo fa). Chiamando '.close', credo che chiuda la connessione (che è il suo scopo specifico) quindi la strada per (si spera, browser cooperating) NON chiuda la connessione NON sia chiamata' close' - potrebbe non essere sufficiente ma è sicuramente necessario. –

1

Penso che questo sia un passaggio per http o https per browser web. Se hai https vecchio: // e ora stai usando http per il file .htaccess del browser, allora questo problema dovrebbe essere creato tramite i plugin yoast una pagina di ricerca per pagina. non preoccuparti non è un errore importante. Per gli hacker questo è un modo per hackerare il tuo sito web se la tua connessione SSL è vuota dovrebbero allegare la pagina o il dominio alla tua connessione SSL e.b http://www.example.com e quando si sfogliano https://www.example.com nel browser ci sono altri collegamenti con il dominio del sito aperto.

Soluzione per questo utilizzare sempre l'indirizzo completo per il sito Web: per proteggere gli hacker contro il tuo sito Web utilizzare ssl e https:/pagina per il tuo sito web.

Quindi questo problema non si è mai verificato in nessun sito o pagina di test.