瀏覽器緩存機制可以減少網路開銷,以便獲得更好的用戶體驗。在前端中常用的緩存有cookie及html中的localStorage和sessionStorage。
1、cookie、localStorage、sessionStorage區別和聯系
共同點:都是保存在瀏覽器端,且同源的。
區別:
1)cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和伺服器間來回傳遞。而sessionStorage和localStorage不會自動把數據發給伺服器,僅在本地保存。
2)cookie數據還有路徑(path)的概念,可以限制cookie只屬於某個路徑下。存儲大小限制也不同,cookie數據不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如會話標識。
sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。
3)數據有效期不同:
sessionStorage:僅在當前瀏覽器窗口關閉前有效,自然也就不可能持久保持;
localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;
cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。
4)作用域不同:
不同瀏覽器無法共享localStorage或sessionStorage中的信息。相同瀏覽器的不同頁面間可以共享相同的localStorage(頁面屬於相同域名和埠),但是不同頁面或標簽頁間無法共享sessionStorage的信息
cookie是在所有同源窗口中都是共享的
2、禁用cookie後,會出現什麼現象?
一般情況session是需要cookie配合使用的,但是有些瀏覽器禁用cookie後,就需要使用其他方式來實現回話管理。
在客戶端禁用Cookie的時候,我們要怎麼做呢,可以有以下兩種方法
URL重寫或者隱藏域(暴露信息不安全,一般不用)
· 設置php.ini中的session.use_trans_sid = 1或者在PHP編譯時打開–enable-trans-sid選項,讓PHP自動通過重寫URL傳遞session id。
· 如果是虛擬主機或者租用的伺服器,無法去修改PHP.ini,那麼可以手動通過URL傳值,或者通過隱藏表單傳遞session id。說簡單些就是自己去操縱sessionid這個唯一標識符,去鑒別用戶即可。
3、登陸信息一般放在session中,cookie還有用嗎?
有用,session會將sessionId存到cookie,再次請求時將sessionId隨請求頭給伺服器,然後拿到sessionId進行查詢即可。也就是說身份信息不會暴露在瀏覽器緩存中。只有sessionId暴露,提高安全性。
4、前端存cookie與後端存cookie有什麼區別?
前端可以通過document.cookie來設置cookie,但是這種方式會暴露信息,除非hash加密;
伺服器接受到http請求後在響應頭加上Set-Cookie欄位,它的值是要設置的Cookie的
㈡ angularjs 頁面刷新後 http緩存還在嗎
.state('test', {
url: '/test',
cache:'false',
templateUrl: 'templates/test.html',
controller: 'testCtrl'
})
㈢ web緩存有哪幾種方式
1 應用程序實現的動態頁面緩存
應用程序把動態文件生成的html文件緩存到文件伺服器,以後用戶請求動態文件,直接從文件伺服器載入對應的靜態緩存的html文件返回給用戶,這裡面主要節省了動態語言的執行時間和資料庫訪問時間。但是會增加了緩存框架的載入和緩存查找的時間。
2 把解釋執行的開發語言編譯成為目標代碼
這個主要把解釋執行的高級語言,例如java,php直接編譯成為平台相關的目標代碼,匯編代碼。在java裡面,比較著名的就是即時編譯器(JIT),其他的語言也要類似的機制。這裡面主要節省了就是解釋執行代碼的時間。這個會增加即時編譯的時間。
3 利用反向代理伺服器的緩存
利用類似nginx的反向代理伺服器,對請求的url對應的輸出的進行緩存。這個緩存和應用程序實現的動態頁面緩存類似,只不過用反向代理充當了應用程序的緩存實現。主要節省了動態余元執行時間和資料庫訪問時間。
4 客戶端瀏覽器緩存
客戶端瀏覽器緩存主要是通過在http頭部增加
Last-Modified,If-Modified-Since,Expires,Cache-Control等標識,和伺服器進行協商,是否是採用客戶的本機緩存來實現。
其中這裡面也會分為三種方式
1 通過Last-Modified,If-Modified-Since方式和伺服器通信,客戶發出http請求中包含If-Modified-Since,如果伺服器端代碼沒有修改,伺服器端返回302響應代碼的請求響應頭(內容不返回)客戶端則直接用本機緩存的內容緩存顯示結果。相當於節省了伺服器執行代碼時間以及數據傳輸時間。
2 通過Expires,Cache-Control控制,客戶端發現如果上次請求的頁面還未過期,通過Expires或者Cache-Control進行辨別,則直接顯示本機緩存的內容,不與伺服器進行通信。
總結一下:1 一般的高並發的應用程序,都在web層採用了以上幾種緩存,一般靜態資源(圖片,js,css)都會採用nginx反向代理+客戶端緩存來實現。
2 對於門戶網站,尤其是首頁的新聞,一般都會緩存起來,可以通過反向代理也可以通過應用程序緩存實現方式
3 對於下載或者視頻網站,由於數據傳輸比較大,直接採用瀏覽器本地緩存實現。
㈣ 什麼是網站緩存就是產生html頁面嗎
轉自:http://www.fovweb.com
這是一篇知識性的文檔,主要目的是為了讓Web緩存相關概念更容易被開發者理解並應用於實際的應用環境中。為了簡要起見,某些實現方面的細節被簡化或省略了。如果你更關心細節實現則完全不必耐心看完本文,後面參考文檔和更多深入閱讀部分可能是你更需要的內容。
什麼是Web緩存,為什麼要使用它?
緩存的類型:
瀏覽器緩存;
代理伺服器緩存;
Web緩存無害嗎?為什麼要鼓勵緩存?
Web緩存如何工作:
如何控制(控制不)緩存:
HTML Meta標簽 vs. HTTP頭信息;
Pragma HTTP頭信息(為什麼不起作用);
使用Expires(過期時間)HTTP頭信息控制保鮮期;
Cache-Control(緩存控制) HTTP頭信息;
校驗參數和校驗;
創建利於緩存網站的竅門;
編寫利於緩存的腳本;
常見問題解答;
緩存機制的實現:Web伺服器端配置;
緩存機制的實現:伺服器端腳本;
參考文檔和深入閱讀;
關於本文檔;
什麼是Web緩存,為什麼要使用它?Web緩存位於Web伺服器之間(1個或多個,內容源伺服器)和客戶端之間(1個或多個):緩存會根據進來的請求保存輸出內容的副本,例如html頁面, 圖片,文件(統稱為副本),然後,當下一個請求來到的時候:如果是相同的URL,緩存直接使用副本響應訪問請求,而不是向源伺服器再次發送請求。
使用緩存主要有2大理由:
減少相應延遲:因為請求從緩存伺服器(離客戶端更近)而不是源伺服器被相應,這個過程耗時更少,讓web伺服器看上去相應更快;
減少網路帶寬消耗:當副本被重用時會減低客戶端的帶寬消耗;客戶可以節省帶寬費用,控制帶寬的需求的增長並更易於管理。
緩存的類型瀏覽器緩存對於新一代的Web瀏覽器來說(例如:IE,Firefox):一般都能在設置對話框中發現關於緩存的設置,通過在你的電腦上僻處一塊硬碟空間用於存儲你已經看過的網站的副本。瀏覽器緩存根據非常簡單的規則進行工作:在同一個會話過程中(在當前瀏覽器沒有被關閉之前)會檢查一次並確定緩存的副本足夠新。這個緩存對於用戶點擊「後退」或者點擊剛訪問過的鏈接特別有用,如果你瀏覽過程中訪問到同一個圖片,這些圖片可以從瀏覽器緩存中調出而即時顯現。
代理伺服器緩存Web代理伺服器使用同樣的緩存原理,只是規模更大。代理伺服器群為成百上千用戶服務使用同樣的機制;大公司和ISP經常在他們的防火牆上架設代理緩存或者單獨的緩存設備;
由於帶路伺服器緩存並非客戶端或者源伺服器的一部分,而是位於原網路之外,請求必須路由到他們才能起作用。一個方法是手工設置你的瀏覽器:告訴瀏覽器使用那個代理,另外一個是通過中間伺服器:這個中間伺服器處理所有的web請求,並將請求轉發到後台網路,而用戶不必配置代理,甚至不必知道代理的存在;
代理伺服器緩存:是一個共享緩存,不只為一個用戶服務,經常為大量用戶使用,因此在減少相應時間和帶寬使用方面很有效:因為同一個副本會被重用多次。
網關緩存也被稱為反向代理緩存或間接代理緩存,網關緩存也是一個中間伺服器,和內網管理員部署緩存用於節省帶寬不同:網關緩存一般是網站管理員自己部署:讓他們的網站更容易擴展並獲得更好的性能;
請求有幾種方法被路由到網關緩存伺服器上:其中典型的是讓用一台或多台負載均衡伺服器從客戶端看上去是源伺服器;
㈤ java、IE 緩存機制
是的Ie有緩存,如果不清理的話,會存在一段時間。有時關閉瀏覽器,再重新打開就可以清除緩存,具體緩存多長時間還沒研究過。
㈥ HTTP的主要作用是什麼
1、客戶與伺服器建立連接;
2、客戶向伺服器提出請求;
3、伺服器接受請求,並根據請求返回相應的文件作為應答;
4、客戶與伺服器關閉連接。
HTTP的性質:
1、HTTP是一種無狀態協議,即伺服器不保留與客戶交易時的任何狀態。這就大大減輕了伺服器記憶負擔,從而保持較快的響應速度。
2、HTTP是一種面向對象的協議。允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,並允許對數據進行壓縮傳送。
(6)http緩存機制擴展閱讀
http代理的作用:
1、突破自身IP訪問限制,訪問國外站點。如:教育網、169網等網路用戶可以通過代理訪問國外網站。
2、訪問一些單位或團體內部資源,如某大學FTP(前提是該代理地址在該資源的允許訪問范圍之內),使用教育網內地址段免費代理伺服器,就可以用於對教育 網開放的各類FTP下載上傳,以及各類資料查詢共享等服務。
3、隱藏真實IP:上網者也可以通過這種方法隱藏自己的IP,免受攻擊。
參考資料來源:網路-http
㈦ 什麼叫做緩存機制
緩存是介於應用程序和物理數據源之間,其作用是為了降低應用程序對物理數據源訪問的頻次,從而提高了應用的運行性能。緩存內的數據是對物理數據源中的數據的復制,應用程序在運行時從緩存讀寫數據,在特定的時刻或事件會同步緩存和物理數據源的數據。
緩存的介質一般是內存,所以讀寫速度很快。但如果緩存中存放的數據量非常大時,也會用硬碟作為緩存介質。緩存的實現不僅僅要考慮存儲的介質,還要考慮到管理緩存的並發訪問和緩存數據的生命周期。
Hibernate的緩存包括Session的緩存和SessionFactory的緩存,其中SessionFactory的緩存又可以分為兩類:內置緩存和外置緩存。Session的緩存是內置的,不能被卸載,也被稱為Hibernate的第一級緩存。SessionFactory的內置緩存和Session的緩存在實現方式上比較相似,前者是SessionFactory對象的一些集合屬性包含的數據,後者是指Session的一些集合屬性包含的數據。SessionFactory的內置緩存中存放了映射元數據和預定義sql語句,映射元數據是映射文件中數據的拷貝,而預定義SQL語句是在Hibernate初始化階段根據映射元數據推導出來,SessionFactory的內置緩存是只讀的,應用程序不能修改緩存中的映射元數據和預定義SQL語句,因此SessionFactory不需要進行內置緩存與映射文件的同步。SessionFactory的外置緩存是一個可配置的插件。在默認情況下,SessionFactory不會啟用這個插件。外置緩存的數據是資料庫數據的拷貝,外置緩存的介質可以是內存或者硬碟。SessionFactory的外置緩存也被稱為Hibernate的第二級緩存。
㈧ 九種瀏覽器端緩存方法知多少
一、http緩存
http緩存是基於HTTP協議的瀏覽器文件級緩存機制。即針對文件的重復請求情況下,瀏覽器可以根據協議頭判斷從伺服器端請求文件還是從本地讀取文件,chrome控制台下的Frames即展示的是瀏覽器的http文件級緩存。以下是瀏覽器緩存的整個機制流程。主要是針對重復的http請求,在有緩存的情況下判斷過程主要分3步:
判斷expires,如果未過期,直接讀取http緩存文件,不發http請求,否則進入下一步
判斷是否含有etag,有則帶上if-none-match發送請求,未修改返回304,修改返回200,否則進入下一步
判斷是否含有last-modified,有則帶上if-modified-since發送請求,無效返回200,有效返回304,否則直接向伺服器請求
如果通過etag和last-modified判斷,即使返回304有至少有一次http請求,只不過返回的是304的返回內容,而不是文件內容。所以合理設計實現expires參數可以減少較多的瀏覽器請求。
二、websql
websql這種方式只有較新的chrome瀏覽器支持,並以一個獨立規范形式出現,主要有以下特點
Web Sql 資料庫API 實際上不是HTML5規范的組成部分;
在HTML5之前就已經存在了,是單獨的規范;
它是將數據以資料庫的形式存儲在客戶端,根據需求去讀取;
跟Storage的區別是: Storage和Cookie都是以鍵值對的形式存在的;
Web Sql 更方便於檢索,允許sql語句查詢;
讓瀏覽器實現小型資料庫存儲功能;
這個資料庫是集成在瀏覽器裡面的,目前主流瀏覽器基本都已支持;
websql API主要包含三個核心方法:
openDatabase : 這個方法使用現有資料庫或創建新資料庫創建資料庫對象。
transaction : 這個方法允許我們根據情況控制事務提交或回滾。
executeSql : 這個方法用於執行真實的SQL查詢。
openDatabase方法可以打開已經存在的資料庫,不存在則創建
var db = openDatabase('mydatabase', '2.0', my db', 2 * 1024);
openDatabasek中五個參數分別為:資料庫名、版本號、描述、數據
㈨ 以下哪些是http請求中瀏覽器緩存機制會用到的協議頭
你想下載哪一種嘛?我感覺手機用UC比較好。我一直用的UC
㈩ php的緩存機制有哪些
主要有:
①普遍緩存技術②頁面緩存③時間觸發緩存④內容觸發緩存⑤靜態緩存(就生成html文件)
⑥內存緩存⑦php的緩沖器⑧MYSQL緩存⑨基於反向代理的Web緩存,DNS輪詢
但是一般常用的就 ①②④,其他的是網站數據量大,交互多,為減小伺服器壓力才用到
參考資料:http://blog.163.com/yuzhongfeiyan338@126/blog/static/38688323200981604944905/