無連接
①無連接的含義
這里所說的無連接并不是指不連接,客戶與服務器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個請求,當服務器返回本次請求的應答后便立即關閉連接,下次請求再重新建立連接。這種一次性連接主要考慮到WWW服務器面向的是Internet中成干上萬個用戶,且只能提供有限個連接,故服務器不會讓一個連接處于等待狀態,及時地釋放連接可以大大提高服務器的執行效率。
②好處與弊端
好處: 限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
弊端: 當前網頁變得越來越復雜,里面可能嵌入了很多圖片,如果每次訪問圖片都需要建立一次 TCP 連接就顯得很低效。后來,提出了Keep-Alive 用來解決效率低的問題。但是keep-alive并不是長久之計,長時間的tcp連接容易導致系統資源無效占用。配置不當的keep-alive,有時比重復利用連接帶來的損失還更大,得不償失。所以,正確地設置keep-alive timeout時間非常重要。
無狀態
①無狀態的含義
即服務器不保留與客戶交易時的任何狀態。這就大大減輕了服務器記憶負擔,從而保持較快的響應速度。HTTP是一種面向對象的協議。允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,并允許對數據進行壓縮傳送。當用戶在一個HTML文檔中定義了一個超文本鏈后,瀏覽器將通過TCP/IP協議與指定的服務器建立連接。
②好處與弊端
好處: 大大減輕了服務器記憶負擔,從而保持較快的響應速度。
弊端: 客戶端與服務器進行動態交互的 Web 應用程序出現之后,最常用是電商平臺,HTTP 無狀態的特性嚴重阻礙了這些應用程序的實現,畢竟交互是需要承前啟后的,簡單的購物車程序也要知道用戶是誰,用戶選擇了什么商品,瀏覽了什么商品,這都是提升用戶體驗的。于是,兩種用于保持 HTTP 連接狀態的技術就應運而生了,一個是 Cookie,而另一個則是 Session。
如何保持狀態?在這里插入代碼片
cookie
Cookies 最典型的應用是判定注冊用戶是否已經登錄網站,用戶可能會得到提示,是否在下一次進入此網站時保留用戶信息以便簡化登錄手續,這些都是 Cookies 的功用。另一個重要應用場合是“購物車”之類處理。用戶可能會在一段時間內在同一家網站的不同頁面中選擇不同的商品,這些信息都會寫入 Cookies,以便在最后付款時提取信息。
session
它是通過服務器來保持狀態的,當客戶端訪問服務器時,服務器根據需求設置 Session,將會話信息保存在服務器上,同時將標示 Session 的 SessionId 傳遞給客戶端瀏覽器,客戶端每次請求都會把這個id值放到http請求的頭部發送給服務端,而這個id值在客戶端會保存下來,保存的容器就是cookie.因此當我們完全禁掉瀏覽器的cookie的時候,服務端的session也會不能正常使用。