-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專(zhuān)題列表 > 正文
前端如何優(yōu)化網(wǎng)站性能(前端如何優(yōu)化網(wǎng)站性能設(shè)置)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于前端如何優(yōu)化網(wǎng)站性能的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話(huà)答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線(xiàn)網(wǎng)頁(yè)版、PC客戶(hù)端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶(hù)遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話(huà)175-8598-2043,或添加微信:1454722008
本文目錄:
一、網(wǎng)站性能優(yōu)化有哪些
一、提高服務(wù)器并發(fā)處理能力
我們總是希望一臺(tái)服務(wù)器在單位時(shí)間內(nèi)能處理的請(qǐng)求越多越好,這也成了web服務(wù)器的能力高低的關(guān)鍵所在。服務(wù)器之所以可以同時(shí)處理多個(gè)請(qǐng)求,在于操作系統(tǒng)通過(guò)多執(zhí)行流體系設(shè)計(jì),使得多個(gè)任務(wù)可以輪流使用系統(tǒng)資源,這些資源包括CPU、內(nèi)存以及I/O等。這就需要選擇一個(gè)合適的并發(fā)策略來(lái)合理利用這些資源,從而提高服務(wù)器的并發(fā)處理能力。這些并發(fā)策略更多的應(yīng)用在apache、nginx、lighttpd等底層web server軟件中。
二、Web組件分離
這里所說(shuō)的web組件是指web服務(wù)器提供的所有基于URL訪(fǎng)問(wèn)的資源,包括動(dòng)態(tài)內(nèi)容,靜態(tài)網(wǎng)頁(yè),圖片,樣式表,腳本,視頻等等。這些資源在文件大小,文件數(shù)量,內(nèi)容更新頻率,預(yù)計(jì)并發(fā)用戶(hù)數(shù),是否需要腳本解釋器等方面有著很大的差異,對(duì)不同特性資源采用能充分發(fā)揮其潛力的優(yōu)化策略,能極大的提高web站點(diǎn)的性能。例如:將圖片部署在獨(dú)立的服務(wù)器上并為其分配獨(dú)立的新域名,對(duì)靜態(tài)網(wǎng)頁(yè)使用epoll模型可以在大并發(fā)數(shù)情況下吞吐率保持穩(wěn)定。
三、數(shù)據(jù)庫(kù)性能優(yōu)化和擴(kuò)展。
Web服務(wù)器軟件在數(shù)據(jù)庫(kù)方面做的優(yōu)化主要是減少訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的次數(shù),具體做法就是使用各種緩存方法。也可以從數(shù)據(jù)庫(kù)本身入手提高其查詢(xún)性能,這涉及到數(shù)據(jù)庫(kù)性能優(yōu)化方面的知識(shí)本文不作討論。另外也可以通過(guò)主從復(fù)制,讀寫(xiě)分離,使用反向代理,寫(xiě)操作分離等方式來(lái)擴(kuò)展數(shù)據(jù)庫(kù)規(guī)模,提升數(shù)據(jù)庫(kù)服務(wù)能力。
四、Web負(fù)載均衡及相關(guān)技術(shù)
負(fù)載均衡是web站點(diǎn)規(guī)模水平擴(kuò)展的一種手段,實(shí)現(xiàn)負(fù)載均衡的方法有好幾種包括基于HTTP重定向的負(fù)載均衡,DNS負(fù)載均衡,反向代理負(fù)載均衡,四層負(fù)載均衡等等。
對(duì)這些負(fù)載均衡方法做簡(jiǎn)單的介紹:基于HTTP重定向的負(fù)載均衡利用了HTTP重定向的請(qǐng)求轉(zhuǎn)移和自動(dòng)跳轉(zhuǎn)功能來(lái)實(shí)現(xiàn)負(fù)載均衡,我們熟悉的鏡像下載就使用這種負(fù)載均衡。DNS負(fù)載均衡是指在一個(gè)DNS服務(wù)器中為同一個(gè)主機(jī)名配置多個(gè)IP地址,在應(yīng)答DNS查詢(xún)時(shí)返回不同的解析結(jié)果將客戶(hù)端的訪(fǎng)問(wèn)引到不同的機(jī)器上,使得不同的客戶(hù)端訪(fǎng)問(wèn)不同的服務(wù)器,從而達(dá)到負(fù)載均衡的目的。反向代理負(fù)載均衡也叫七層負(fù)載均衡,這是因?yàn)榉聪虼矸?wù)器工作在TCP七層結(jié)構(gòu)的第七層(應(yīng)用層),它通過(guò)檢查流經(jīng)的HTTP報(bào)頭,根據(jù)報(bào)頭內(nèi)的信息來(lái)執(zhí)行負(fù)載均衡任務(wù)。四層負(fù)載均衡是基于NAT技術(shù)的負(fù)載均衡,它將一個(gè)Internet上合法注冊(cè)的IP地址映射為多個(gè)內(nèi)部服務(wù)器的IP地址,對(duì)每次TCP連接請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部IP地址,達(dá)到負(fù)載均衡的目的。此外,還有工作在數(shù)據(jù)鏈路層(第二層)的直接路由方式下的負(fù)載均衡,它通過(guò)修改數(shù)據(jù)包目標(biāo)MAC地址來(lái)實(shí)現(xiàn)。以及,基于IP隧道的負(fù)載均衡,在這種方式下可以將實(shí)際服務(wù)器根據(jù)需要部署在不同的地域,并根據(jù)就近訪(fǎng)問(wèn)的原則來(lái)轉(zhuǎn)移請(qǐng)求,CDN服務(wù)便是基于IP隧道技術(shù)來(lái)實(shí)現(xiàn)的。
Web負(fù)載均衡在擴(kuò)展web服務(wù)器規(guī)模的同時(shí)也給web站點(diǎn)性能優(yōu)化提供了一個(gè)更大更復(fù)雜也更靈活自由的平臺(tái),基于該平臺(tái)性能優(yōu)化的策略包括共享文件系統(tǒng),內(nèi)容分發(fā)與同步,分布式文件系統(tǒng),分布式計(jì)算,分布式緩存等等。
五、web緩存技術(shù)
web緩存技術(shù)被認(rèn)為是減輕服務(wù)器負(fù)載、降低網(wǎng)絡(luò)擁塞、增強(qiáng)萬(wàn)維網(wǎng)可擴(kuò)展性的有效途徑,其基本思想是利用客戶(hù)訪(fǎng)問(wèn)的時(shí)間局部性(Temporal Locality)原理,將客戶(hù)訪(fǎng)問(wèn)過(guò)的內(nèi)容在Cache中存放一個(gè)副本,當(dāng)該內(nèi)容下次被訪(fǎng)問(wèn)時(shí),不必連接到駐留網(wǎng)站或重新計(jì)算生成,而是由Cache中保留的副本提供。Web緩存可以帶來(lái)如下的好處:
(1) 減少網(wǎng)絡(luò)流量,從而減輕網(wǎng)絡(luò)擁塞;這是因?yàn)榫彺姹苊饬艘徊糠諬TTP請(qǐng)求。
(2) 降低客戶(hù)訪(fǎng)問(wèn)延遲,其主要原因有:①已緩存的內(nèi)容,客戶(hù)可以緩存獲取而不是從服務(wù)器獲取或重新計(jì)算生成,從而減小了傳輸延遲縮短了響應(yīng)時(shí)間;②沒(méi)有被緩存的內(nèi)容由于網(wǎng)絡(luò)擁塞及服務(wù)器負(fù)載的減輕而可以較快地被客戶(hù)獲取;
(3) 由于客戶(hù)的部分或者全部請(qǐng)求內(nèi)容可以從通過(guò)緩存獲取,從而減輕了遠(yuǎn)程服務(wù)器負(fù)載。
(4) 如果由于服務(wù)器故障或網(wǎng)絡(luò)故障造成服務(wù)器無(wú)法響應(yīng)客戶(hù)請(qǐng)求,客戶(hù)可以從緩存中獲取緩存的內(nèi)容副本,使得web站點(diǎn)服務(wù)的魯棒性(Robustness)得到了加強(qiáng)。
可以看出web緩存能給web站點(diǎn)帶可觀的性能提升。其實(shí)在用戶(hù)發(fā)出請(qǐng)求到一幅完整的網(wǎng)頁(yè)呈現(xiàn)在用戶(hù)面前這一過(guò)程中緩存無(wú)處不在,下面是web性能優(yōu)化時(shí)常用的緩存技術(shù),你會(huì)發(fā)現(xiàn)緩存被廣泛應(yīng)用在各個(gè)環(huán)節(jié)。
瀏覽器緩存:瀏覽器一般會(huì)在用戶(hù)文件系統(tǒng)中創(chuàng)建一個(gè)目錄,用于存放緩存文件,并給每個(gè)緩存文件打上必要的標(biāo)記,比如過(guò)期時(shí)間等。這些標(biāo)記主要用于瀏覽器和服務(wù)器之間的緩存協(xié)商。
Web服務(wù)器緩存:一個(gè)URL在一段較長(zhǎng)時(shí)間內(nèi)對(duì)應(yīng)一個(gè)唯一的響應(yīng)內(nèi)容,比如靜態(tài)內(nèi)容或者更新不太頻繁的動(dòng)態(tài)內(nèi)容,web服務(wù)器可將響應(yīng)內(nèi)容緩存起來(lái),下次web服務(wù)器便可以在收到請(qǐng)求后立即拿出事先緩存好的響應(yīng)內(nèi)容并返回給瀏覽器。
代理服務(wù)器緩存:暴露在互聯(lián)網(wǎng)中與后端的web服務(wù)器通過(guò)內(nèi)部網(wǎng)絡(luò)相連的前端服務(wù)器稱(chēng)為反向代理服務(wù)器,建立在反向代理服務(wù)器上的緩存稱(chēng)為反向代理緩存。暴露在互聯(lián)網(wǎng)中與后端的web客戶(hù)端通過(guò)內(nèi)部網(wǎng)絡(luò)相連的前端服務(wù)器稱(chēng)為正向代理服務(wù)器,建立在正向代理服務(wù)器上的緩存稱(chēng)為正向代理緩存。代理服務(wù)器緩存位于客戶(hù)端和web服務(wù)器之間,可以將它看做二者之間的一個(gè)中繼站。它的存在可以改善客戶(hù)端的訪(fǎng)問(wèn)速度、提升web server的服務(wù)能力、安全性等等。
總共分析總結(jié)了五種技術(shù),主要希望能夠?qū)eb server性能優(yōu)化這塊提供一個(gè)整體的認(rèn)識(shí)。后續(xù)會(huì)專(zhuān)門(mén)就web緩存技術(shù)發(fā)表一些自己的看法。
二、北大青鳥(niǎo)設(shè)計(jì)培訓(xùn):web前端工程師都需要學(xué)習(xí)什么?
Web前端開(kāi)發(fā)工程師現(xiàn)在的發(fā)展是一個(gè)很新穎的職業(yè),簡(jiǎn)單的說(shuō)在國(guó)內(nèi)或是在國(guó)際上真正開(kāi)始受到重視的時(shí)間不到10年。
Web前端開(kāi)發(fā)是從網(wǎng)頁(yè)制作演變而來(lái)的,名稱(chēng)上有很明顯的時(shí)代特征。
洛陽(yáng)北大青鳥(niǎo)http://www.kmbdqn.cn/發(fā)現(xiàn)在互聯(lián)網(wǎng)的演化進(jìn)程中,網(wǎng)頁(yè)制作是Web1.0時(shí)代的產(chǎn)物,那時(shí)網(wǎng)站的主要內(nèi)容都是靜態(tài)的,用戶(hù)使用網(wǎng)站的行為也以瀏覽為主要成為web前端工程師都需要學(xué)習(xí)什么?第一,必須掌握基本的Web前端開(kāi)發(fā)技術(shù),其中包括:CSS、HTML、SEO、DOM、BOM、Ajax、JavaScript等,在掌握這些技術(shù)的同時(shí),還要清楚地了解它們?cè)诓煌瑸g覽器上的兼容情況、渲染原理和存在的Bug。
第二,在一名合格的前端工程師的知識(shí)結(jié)構(gòu)中,網(wǎng)站性能優(yōu)化、SEO和服務(wù)器端的基礎(chǔ)知識(shí)也是必須掌握的。
第三,必須學(xué)會(huì)運(yùn)用各種工具進(jìn)行輔助開(kāi)發(fā)。
第四,除了要掌握技術(shù)層面的知識(shí),還要掌握理論層面的知識(shí),包括代碼的可維護(hù)性、組件的易用性、分層語(yǔ)義模板和瀏覽器分級(jí)支持,等等。
可見(jiàn),看似簡(jiǎn)單的網(wǎng)頁(yè)制作,如果要做得更好、更專(zhuān)業(yè),真的是不簡(jiǎn)單。
這就是前端開(kāi)發(fā)的特點(diǎn),也是讓很多人困惑的原因。
如此繁雜的知識(shí)體系讓新手學(xué)習(xí)起來(lái)無(wú)從下手,對(duì)于老手來(lái)說(shuō),也時(shí)常不知道下一步該學(xué)什么。
代碼質(zhì)量是前端開(kāi)發(fā)中應(yīng)該重點(diǎn)考慮的問(wèn)題之一。
例如,實(shí)現(xiàn)一個(gè)網(wǎng)站界面可能會(huì)有無(wú)數(shù)種方案,但有些方案的維護(hù)成本會(huì)比較高,有些方案會(huì)存在性能問(wèn)題,而有些方案則更易于維護(hù),而且性能也比較好。
這里的關(guān)鍵影響因素就是代碼質(zhì)量。
CSS、HTML、JavaScript這三種前端開(kāi)發(fā)語(yǔ)言的特點(diǎn)是不同的,對(duì)代碼質(zhì)量的要求也不同,但它們之間又有著千絲萬(wàn)縷的聯(lián)系。
在web前端工程師之前,我們是需要學(xué)習(xí)、實(shí)操,掌握靜態(tài)網(wǎng)頁(yè)的制作,能夠靈活的使用html+css語(yǔ)言和Div+css的布局來(lái)制作優(yōu)良的靜態(tài)頁(yè)面。
能夠使用JavaScript語(yǔ)言制作精良的動(dòng)態(tài)效果和用戶(hù)體驗(yàn),并且深入淺出的對(duì)于JavaScript的函數(shù)框架制作與使用。
能夠使用Html5來(lái)制作精美網(wǎng)頁(yè)效果以及移動(dòng)APP開(kāi)發(fā)和混合APP的開(kāi)發(fā)與制作。
如何才能成為一個(gè)好的web前端工程師?一位好的Web前端開(kāi)發(fā)工程師在知識(shí)體系上既要有廣度,又要有深度,所以很多大公司即使出高薪也很難招聘到理想的前端開(kāi)發(fā)工程師。
現(xiàn)在說(shuō)的重點(diǎn)不在于講解技術(shù),而是更側(cè)重于對(duì)技巧的講解。
技術(shù)非黑即白,只有對(duì)和錯(cuò),而技巧則見(jiàn)仁見(jiàn)智。
以前會(huì)Photoshop和Dreamweaver就可以制作網(wǎng)頁(yè),現(xiàn)在只掌握這些已經(jīng)遠(yuǎn)遠(yuǎn)不夠了。
無(wú)論是開(kāi)發(fā)難度上,還是開(kāi)發(fā)方式上,現(xiàn)在的網(wǎng)頁(yè)制作都更接近傳統(tǒng)的網(wǎng)站后臺(tái)開(kāi)發(fā),所以現(xiàn)在不再叫網(wǎng)頁(yè)制作,而是叫Web前端開(kāi)發(fā)。
Web前端開(kāi)發(fā)在產(chǎn)品開(kāi)發(fā)環(huán)節(jié)中的作用變得越來(lái)越重要,而且需要專(zhuān)業(yè)的前端工程師才能做好,這方面的專(zhuān)業(yè)人才近兩年來(lái)備受青睞。
Web前端開(kāi)發(fā)是一項(xiàng)很特殊的工作,涵蓋的知識(shí)面非常廣,既有具體的技術(shù),又有抽象的理念。
簡(jiǎn)單地說(shuō),它的主要職能就是把網(wǎng)站的界面更好地呈現(xiàn)給用戶(hù)。
所以一名優(yōu)秀的前端開(kāi)發(fā)工程師,不單單需要掌握前端必須的各種技術(shù),同時(shí)還要掌握其它技術(shù),需要掌握一點(diǎn)后臺(tái)的知識(shí),同時(shí)也要對(duì)網(wǎng)站構(gòu)架有一定的了解,同時(shí)還要掌握一定的SEO網(wǎng)站優(yōu)化技術(shù),這樣才可以稱(chēng)之為一個(gè)“優(yōu)秀的web前端開(kāi)發(fā)工程師”。
除了技術(shù)以外,還需要一定的時(shí)間來(lái)沉淀自己。
一名資深的優(yōu)秀web前端開(kāi)發(fā)工程師,是每個(gè)大型企業(yè)都渴望的人才。
業(yè)內(nèi)人士表示,寧可高薪招人,險(xiǎn)企也不愿自己培養(yǎng)相關(guān)的技術(shù)人才
三、前端怎么優(yōu)化大數(shù)據(jù)頁(yè)面?
只給瀏覽器肯定用得上的數(shù)據(jù)。后端服務(wù)往往不知道前端具體需要哪些數(shù)據(jù),給的數(shù)據(jù)冗余,如果去掉不必要的數(shù)據(jù),可以節(jié)省數(shù)據(jù)傳輸時(shí)間。
先展示用戶(hù)第一眼看到的界面,然后懶加載其余部分。不管頁(yè)面有多大,用戶(hù)同一時(shí)間看到的也就屏幕那么大,先把用戶(hù)第一眼看到的數(shù)據(jù)加載展示了,能打打提高感知性能。
緩存數(shù)據(jù)。這個(gè)緩存可以放在瀏覽器端,比如用Service Worker的Cache Storage,也可以在服務(wù)器端,比如常用的圖表的顯示,可以在服務(wù)器端預(yù)先計(jì)算出接過(guò)來(lái),省去瀏覽器的計(jì)算時(shí)間
四、Web前端新手應(yīng)該了解的Cookie知識(shí)!
今天小編要跟大家分享的文章是關(guān)于Web前端新手應(yīng)該了解的Cookie知識(shí)。正準(zhǔn)備學(xué)習(xí)Web前端知識(shí)和準(zhǔn)備從事Web
前端工作的小伙伴怎么能不了解Cookie。今天小編就為大家?guī)?lái)了這篇文章,讓我們一起來(lái)看一看Web前端新手應(yīng)該了解的Cookie知識(shí)。
一、Cookie的出現(xiàn)
瀏覽器和服務(wù)器之間的通信少不了HTTP協(xié)議,但是因?yàn)镠TTP協(xié)議是無(wú)狀態(tài)的,所以服務(wù)器并不知道上一次瀏覽器做了什么樣的操作,這樣嚴(yán)重阻礙了交互式Web
應(yīng)用程序的實(shí)現(xiàn)。
針對(duì)上述的問(wèn)題,網(wǎng)景公司的程序員創(chuàng)造了Cookie。
二、Cookie的傳輸
服務(wù)器端在實(shí)現(xiàn)Cookie標(biāo)準(zhǔn)的過(guò)程中,需要對(duì)任意HTTP請(qǐng)求發(fā)送Set-CookieHTTP頭作為響應(yīng)的一部分:
1.Set-Cookie:name=value;expires=Tue,03-Sep-201914:10:21GMT;path=/;
domain=.#;
瀏覽器端會(huì)存儲(chǔ)這樣的Cookie,并且為之后的每個(gè)請(qǐng)求添加CookieHTTP請(qǐng)求頭發(fā)送回服務(wù)器:
1.Cookie:name=value
服務(wù)器通過(guò)驗(yàn)證Cookie值,來(lái)判斷瀏覽器發(fā)送請(qǐng)求屬于哪一個(gè)用戶(hù)。
三、瀏覽器中的Cookie
瀏覽器中的Cookie主要由以下幾部分組成:
·名稱(chēng):Cookie唯一的名稱(chēng),必須經(jīng)過(guò)URL編碼處理。(同名會(huì)出現(xiàn)覆蓋的情況)
·值:必須經(jīng)過(guò)URL編碼處理。
·域(domain):默認(rèn)情況下cookie在當(dāng)前域下有效,你也可以設(shè)置該值來(lái)確保對(duì)其子域是否有效。
·路徑(path):指定Cookie在哪些路徑下有效,默認(rèn)是當(dāng)前路徑下。
·
失效時(shí)間(expires):默認(rèn)情況下,瀏覽器會(huì)話(huà)結(jié)束時(shí)會(huì)自動(dòng)刪除Cookie;也可以設(shè)置一個(gè)GMT格式的日期,指定具體的刪除日期;如果設(shè)置的日期為以前的日期,那么Cookie會(huì)立即刪除。
·安全標(biāo)志(secure):指定之后只允許Cookie發(fā)送給https協(xié)議。
瀏覽器在發(fā)送請(qǐng)求時(shí),只會(huì)將名稱(chēng)與值添加到請(qǐng)求頭的Cookie字段中,發(fā)送給服務(wù)端。
瀏覽器提供了一個(gè)非常蹩腳的API來(lái)操作Cookie:
1.document.cookie
通過(guò)上述方法可以對(duì)該Cookie進(jìn)行寫(xiě)操作,每一次只能寫(xiě)入一條Cookie字符串:
1.document.cookie='a=1;secure;path=/'
通過(guò)該方法還可以進(jìn)行Cookie的讀操作:
1.document.cookie//"a=1"
由于上述方法操作Cookie非常的不直觀,一般都會(huì)寫(xiě)一些函數(shù)來(lái)簡(jiǎn)化Cookie讀取、設(shè)置和刪除操作。
對(duì)于Cookie的設(shè)置操作中,需要以下幾點(diǎn):
對(duì)于名稱(chēng)和值進(jìn)行URL編碼處理,也就是采用JavaScript中的encodeURIComponent()方法;
expires要求傳入GMT格式的日期,需要處理為更易書(shū)寫(xiě)的方式,比如:設(shè)置秒數(shù)的方式;注意只有的屬性名的secure;
每一段信息需要采用分號(hào)加空格。
1.functionsetCookie(key,value,attributes){
2.if(typeofdocument==='undefined'){
3.return
4.}
5.attributes=Object.assign({},{
6.path:'/'
7.},attributes)
8.
9.let{domain,path,expires,secure}=attributes
10.
11.if(typeofexpires==='number'){
12.expires=newDate(Date.now()+expires*1000)
13.}
14.if(expiresinstanceofDate){
15.expires=expires.toUTCString()
16.}else{
17.expires=''
18.}
19.
20.key=encodeURIComponent(key)
21.value=encodeURIComponent(value)
22.
23.letcookieStr=`${key}=${value}`
24.
25.if(domain){
26.cookieStr+=`;domain=${domain}`
27.}
28.
29.if(path){
30.cookieStr+=`;path=${path}`
31.}
32.
33.if(expires){
34.cookieStr+=`;expires=${expires}`
35.}
36.
37.if(secure){
38.cookieStr+=`;secure`
39.}
40.
41.return(document.cookie=cookieStr)
42.}
Cookie的讀操作需要注意的是將名稱(chēng)與值進(jìn)行URL解碼處理,也就是調(diào)用JavaScript中的decodeURIComponent()方法:
1.functiongetCookie(name){
2.if(typeofdocument==='undefined'){
3.return
4.}
5.letcookies=[]
6.letjar={}
7.document.cookie&&(cookies=document.cookie.split(';'))
8.
9.for(leti=0,max=cookies.length;i 10.let[key,value]=cookies[i].split('=') 11.key=decodeURIComponent(key) 12.value=decodeURIComponent(value) 13.jar[key]=value 14.if(key===name){ 15.break 16.} 17.} 18. 19.returnname?jar[name]:jar 20.} 最后一個(gè)清除的方法就更加簡(jiǎn)單了,只要將失效日期(expires)設(shè)置為過(guò)去的日期即可: 1.functionremoveCookie(key){ 2.setCookie(key,'',{expires:-1}) 3.} 介紹Cookie基本操作的封裝之后,還需要了解瀏覽器為了限制Cookie不會(huì)被惡意使用,規(guī)定了Cookie所占磁盤(pán)空間的大小以及每個(gè)域名下Cookie的個(gè)數(shù)。 四、服務(wù)端的Cookie 相比較瀏覽器端,服務(wù)端執(zhí)行Cookie的寫(xiě)操作時(shí),是將拼接好的Cookie字符串放入響應(yīng)頭的Set-Cookie字段中;執(zhí)行Cookie的讀操作時(shí),則是解析HTTP請(qǐng)求頭字段Cookie中的鍵值對(duì)。 與瀏覽器最大的不同,在于服務(wù)端對(duì)于Cookie的安全性操碎了心 signed 當(dāng)設(shè)置signed=true時(shí),服務(wù)端會(huì)對(duì)該條Cookie字符串生成兩個(gè)Set-Cookie響應(yīng)頭字段: 1.Set-Cookie:lastTime=2019-03-05T14:31:05.543Z;path=/;httponly 2.Set-Cookie:lastTime.sig=URXREOYTtMnGm0b7qCYFJ2Db400;path=/; httponly 這里通過(guò)再發(fā)送一條以.sig為后綴的名稱(chēng)以及對(duì)值進(jìn)行加密的Cookie,來(lái)驗(yàn)證該條Cookie是否在傳輸?shù)倪^(guò)程中被篡改。 httpOnly 服務(wù)端Set-Cookie字段中新增httpOnly屬性,當(dāng)服務(wù)端在返回的Cookie信息中含有httpOnly字段時(shí),開(kāi)發(fā)者是不能通過(guò)JavaScript來(lái)操縱該條Cookie字符串的。 這樣做的好處主要在于面對(duì)XSS(Cross-sitescripting)攻擊時(shí),黑客無(wú)法拿到設(shè)置httpOnly字段的Cookie信息。 此時(shí),你會(huì)發(fā)現(xiàn)localStorage相比較Cookie,在XSS攻擊的防御上就略遜一籌了。sameSite 在介紹這個(gè)新屬性之前,首先你需要明白:當(dāng)用戶(hù)從#發(fā)起#的請(qǐng)求也會(huì)攜帶上Cookie,而從#攜帶過(guò)來(lái)的Cookie稱(chēng)為第三方Cookie。 雖然第三方Cookie有一些好處,但是給CSRF(Cross-siterequestforgrey)攻擊的機(jī)會(huì)。 為了從根源上解決CSRF攻擊,sameSite屬性便閃亮登場(chǎng)了,它的取值有以下幾種: · strict:瀏覽器在任何跨域請(qǐng)求中都不會(huì)攜帶Cookie,這樣可以有效的防御CSRF攻擊,但是對(duì)于有多個(gè)子域名的網(wǎng)站采用主域名存儲(chǔ)用戶(hù)登錄信息的場(chǎng)景,每個(gè)子域名都需要用戶(hù)重新登錄,造成用戶(hù)體驗(yàn)非常的差。 ·lax:相比較strict,它允許從三方網(wǎng)站跳轉(zhuǎn)過(guò)來(lái)的時(shí)候使用Cookie。 為了方便大家理解sameSite的實(shí)際效果,可以看這個(gè)例子: 1.//#服務(wù)端會(huì)在訪(fǎng)問(wèn)頁(yè)面時(shí)返回如下Cookie 2.cookies.set('foo','aaaaa') 3.cookies.set('bar','bbbbb') 4.cookies.set('name','cccccc') 5. 6.//#服務(wù)端會(huì)在訪(fǎng)問(wèn)頁(yè)面時(shí)返回如下Cookie 7.cookies.set('foo','a',{sameSite:'strict'}) 8.cookies.set('bar','b',{sameSite:'lax'}) 9.cookies.set('baz','c') 如何現(xiàn)在用戶(hù)在#中點(diǎn)擊鏈接跳轉(zhuǎn)到#,它的請(qǐng)求頭是這樣的: 1.RequestHeaders 2. 3.Cookie:bar=b;baz=c 五、網(wǎng)站性能優(yōu)化 Cookie在服務(wù)端和瀏覽器的通信中,主要依靠HTTP的響應(yīng)頭和請(qǐng)求頭傳輸?shù)模訡ookie會(huì)占據(jù)一定的帶寬。 前面提到瀏覽器會(huì)為每一次HTPP請(qǐng)求自動(dòng)攜帶上Cookie信息,但是對(duì)于同站內(nèi)的靜態(tài)資源,服務(wù)器并不需要處理其攜帶的Cookie,這無(wú)形中便浪費(fèi)了帶寬。 在最佳實(shí)踐中,一般都會(huì)將靜態(tài)資源部署到獨(dú)立的域名上,從而可以避免無(wú)效Cookie的影響。 以上就是小編今天為大家分享的關(guān)于Web前端新手應(yīng)該了解的Cookie知識(shí),希望本篇文章能夠?qū)φ趶氖耊eb前端工作和準(zhǔn)備從事Web 前端學(xué)習(xí)的小伙伴們有所幫助。想要了解更多Web前端相關(guān)知識(shí)記得關(guān)注北大青鳥(niǎo)Web培訓(xùn)官網(wǎng)! 作者|descire 來(lái)源|#/article/286535 *聲明:內(nèi)容與圖片均來(lái)源于網(wǎng)絡(luò)(部分內(nèi)容有修改),版權(quán)歸原作者所有,如來(lái)源信息有誤或侵犯權(quán)益,請(qǐng)聯(lián)系我們刪除或授權(quán)事宜
以上就是關(guān)于前端如何優(yōu)化網(wǎng)站性能相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢(xún),客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。 推薦閱讀: 杭州前端培訓(xùn)學(xué)校(杭州前端培訓(xùn)學(xué)校排名) 北京前端開(kāi)發(fā)人力外包(北京前端開(kāi)發(fā)人力外包怎么樣) 中國(guó)最好十大排名醫(yī)院(中國(guó)最好十大排名醫(yī)院)
猜你喜歡
抖音排序是自動(dòng)的嗎(抖音排序是自動(dòng)的嗎)
給未來(lái)的自己電視劇主題曲(給未來(lái)的自己電視劇主題曲是什么)
免費(fèi)合并pdf文件(免費(fèi)合并pdf文件最簡(jiǎn)單的方法)
免費(fèi)追劇不看廣告(免費(fèi)追劇不看廣告的app)
互聯(lián)網(wǎng)公司的商業(yè)模式(互聯(lián)網(wǎng)的商業(yè)模式是)
阿里云快照(阿里云快照可以實(shí)現(xiàn)數(shù)據(jù)備份和恢復(fù))
開(kāi)廣告公司利潤(rùn)大嗎(開(kāi)廣告公司利潤(rùn)大嗎)
大多數(shù)網(wǎng)站頁(yè)面結(jié)構(gòu)包括哪些(大多數(shù)網(wǎng)站頁(yè)面結(jié)構(gòu)包括哪些內(nèi)容)