HTTP的三種儲存資料的層級(Request、Session、Application)
資料儲存的意思並不是指資料儲存在資料庫,而是指儲存在記憶體中的資料;因為資料儲存在記憶體中,所以資料不會永久保存,而是經過一段特定的時間後不見,所以下方我們要來討論Request、Session、Application這三種層級的不同。除這這個部份外,大架構因為有一個運作方式中,是:
處理第一次發送的Request,與處理第二次發送的Request,二台是不同的Server,這個機制在下方會談到。
我們也會在這個章節討論,如果是這種情形下,資料儲放的層級不同會不會有什麼影響。
Request層級
儲存的資料在Request層級的情況下,代表資料是由使用者端送入,Server處理完後即消失。而它的生命週期如下:
開始:由使用者發送一筆Request開始。
結束:從Server回傳一筆Reponse後結束。
處理的機器不同時:因為資料的生命週期關係,第二次傳送的資料本來就不會跟第一次傳送的資料有關係,以在不同的機器運行上,不會有什麼問題。
Session層級
儲存的資料在Session層級的情況下,代表資料是儲存在Server機器的記憶體(或檔案)上;主要的功能是當同一個使用者,接二連三的操作網頁時,將需要跨Request的資料保存在Session中,例如:登入的使用者資料、使用者加入購物車的資料等。而Session的生命週期如下:
開始:當Request未帶Session ID時,Server端則建立一個Session ID,讓使用者下次也帶入Session ID給Server,這樣Server才知道,這是同一個使用者帶來的。
結束:Session過期後結束;Server端通常會預設20分鐘~30分鐘後,Session會過期,或者是使用者登出時,程式會強制Session過期。
處理的機器不同時:因為資料存放在單台機器上,所以在不同的機器上,會有讀取到不同的資料或讀取不到資料的問題。
Application層級
儲存的資料在Application層級的情況下,通常這類的資料是不太會變動的,大部份是為了加快程式運行的速度,所以將比較複雜的運算後結果,或者常用的不會更動資料,儲存在Application層級上。而Aplication的儲存位置是跟伺服器的程式有關,伺服器程式指的是像Apacha之類的程式,而非我們自己寫的程式,而它的生命週期如下:
開始:當伺服器程式啟動時。
結束:當伺服器程式停止時。
處理的機器不同時:因為資料儲放在不同的服伺器上,所以會讀到不同的資料;不過大部份會儲在Application層級的資料,通常是以不會變動的資料為主,所以通常各個機器上儲放的資料內容是一樣的。
大概瞭解了這三個資料存放層級後,我們下方可以來討論大架構的設計概念,與我們程式之間的關係了。
留言列表