iT邦幫忙

0

企業資料通訊Week5 (1) | Catche 網頁快取

完整參考連結在底下

甚麼是網頁快取?

想一想大型網站如FB、IG,或是蝦皮等購物網站,如果一次有很多人造訪就容易發生堵塞問題,很卡、速度也慢。當資訊海量的時候,每一秒鐘的上百萬次的查找都有可能是讓系統效能延遲的殺手,這時有Catche 幫我們暫存資料,不需要每次造訪就更新一次,如此可以省的每次去撈資料庫的時間。

這樣只有第一次瀏覽網站的時候需要下載,之後只要在Cache過期前進入網站,都可以透過Cache機制來避免讀取過慢。「降低使用者端的 Request 發送」與「減少Server Response回去使用者端資料」造成的遲緩和浪費。

如何運作?

我們透過 Proxy Server(代理伺服器,通常是ISP提供) 的東西擔任Web Catche的角色,把大家常常看的網頁資料暫存在一個位置,之後瀏覽器向DNS[之後會說明]要IP,然後找到IP後,會先向proxy server 查詢是否有這個網站的資料,如果有的話,Proxy Server 就直接把內容傳給了使用者,如果proxy server 沒有資料的話(或是此資料已經過期),才會直接向網站要資料。
如圖:
https://ithelp.ithome.com.tw/upload/images/20211024/20135414ttsMXVZzp4.png
參見:什麼是Proxy?

小筆記:

  • /*cache acts as both
    client and server
    /
  • 事實上現在比較少用proxy server
  • 可以隱藏真實IP
  • 有人把proxy server當 VPN用,因為request 是從proxy server發的
    EX:代理伺服器存取 Netflix,一個組態了對中國的區域限制的串流網站。

**下面這張圖是在講有proxy server 使速度變快(我不知道會不會考,先記錄下來XD)
https://ithelp.ithome.com.tw/upload/images/20211024/2013541434s1RAGktT.png

Conditional GET

參見:Conditional GET Request
沒有proxy server 我們也可以靠自己實現 catche 效果
https://ithelp.ithome.com.tw/upload/images/20211024/20135414oVgA0c7NuC.png
Client(browser) 會自己載下來的資料放在某資料夾,並會註明這東西是從哪個host來的?甚麼時候拿的?
當browser 要去向Server拿相同東西時會在 request 裡面 If-modified-since: 的地方註明上次拿的時間

第一種狀況(如圖)東西還很新

https://ithelp.ithome.com.tw/upload/images/20211024/20135414p2VoHvVnKH.png
response 回短短的 304 Not Modified ,那麼代表 browser 之前取的資料還是最新的,所以server沒有傳新的資料過來。

另一種狀況(如圖)東西已經過時

https://ithelp.ithome.com.tw/upload/images/20211024/2013541489dU8sZyg8.png
respons 回 200 OK,代表在上次browser拿資料到現在的這段期間,server的東西已經有更新過了,所以這時server
會傳新的資料過來。

總結:

這些設計都是為了讓速度更快、更流暢、更省事
都是發現問題並解決問題,好還要再更好的過程
感謝這些不將就的工程師^o^

參考文章:
[不是工程師] 讓網站速度飛快的秘密,你了解什麼是網頁快取(Cache)嗎?
代理伺服器 WIKI
Conditional GET Request
什麼是Proxy?


尚未有邦友留言

立即登入留言