2017-07-06

Canvas和SVG

Canvas 通過(guò)Javascript 來(lái)繪制 2D 圖形护蝶。Canvas 是逐像素進(jìn)行渲染的华烟。在 Canvas 中,一旦圖形被繪制完成持灰,它就不會(huì)繼續(xù)得到瀏覽器的關(guān)注盔夜。如果其位置發(fā)生變化,那么整個(gè)場(chǎng)景也需要重新繪制堤魁,包括任何或許已被圖形覆蓋的對(duì)象喂链。

SVG 是一種使用 XML 描述 2D 圖形的語(yǔ)言。SVG 基于 XML妥泉,這意味著 SVG DOM 中的每個(gè)元素都是可用的椭微。你可以為某個(gè)元素附加 JavaScript 事件處理器。在 SVG 中涛漂,每個(gè)被繪制的圖形均被視為對(duì)象赏表。如果 SVG 對(duì)象的屬性發(fā)生變化,那么瀏覽器能夠自動(dòng)重現(xiàn)圖形匈仗。

Canvas和SVG相比瓢剿,canvas更依賴于分辨率,不支持事件處理器悠轩,文本渲染能力弱间狂,比較適合密集型游戲,其中的許多對(duì)象會(huì)被頻繁繪制火架,而svg則比較適用于類似谷歌地圖帶有大型渲染區(qū)域的應(yīng)用程序鉴象。


瀏覽器緩存機(jī)制

瀏覽器緩存機(jī)制是指通過(guò) HTTP 協(xié)議頭里的 Cache-Control(或 Expires)和 Last-Modified(或 Etag)等字段來(lái)控制文件緩存的機(jī)制忙菠。

Cache-Control 用于控制文件在本地緩存有效時(shí)長(zhǎng)。最常見(jiàn)的纺弊,比如服務(wù)器回包:Cache-Control:max-age=600 表示文件在本地應(yīng)該緩存牛欢,且有效時(shí)長(zhǎng)是600秒(從發(fā)出請(qǐng)求算起)。在接下來(lái)600秒內(nèi)淆游,如果有請(qǐng)求這個(gè)資源傍睹,瀏覽器不會(huì)發(fā)出 HTTP 請(qǐng)求,而是直接使用本地緩存的文件犹菱。

Last-Modified 是標(biāo)識(shí)文件在服務(wù)器上的最新更新時(shí)間拾稳。下次請(qǐng)求時(shí),如果文件緩存過(guò)期腊脱,瀏覽器通過(guò) If-Modified-Since 字段帶上這個(gè)時(shí)間访得,發(fā)送給服務(wù)器,由服務(wù)器比較時(shí)間戳來(lái)判斷文件是否有修改陕凹。如果沒(méi)有修改悍抑,服務(wù)器返回304告訴瀏覽器繼續(xù)使用緩存;如果有修改杜耙,則返回200传趾,同時(shí)返回最新的文件。

Cache-Control 通常與 Last-Modified 一起使用泥技。一個(gè)用于控制緩存有效時(shí)間眉菱,一個(gè)在緩存失效后看成,向服務(wù)查詢是否有更新光羞。

Cache-Control 還有一個(gè)同功能的字段:Expires碗降。Expires 的值一個(gè)絕對(duì)的時(shí)間點(diǎn)啤誊,如:Expires: Thu, 10 Nov 2015 08:45:11 GMT饺窿,表示在這個(gè)時(shí)間點(diǎn)之前鲫咽,緩存都是有效的姨伤。

Expires 是 HTTP1.0 標(biāo)準(zhǔn)中的字段劫恒,Cache-Control 是 HTTP1.1 標(biāo)準(zhǔn)中新加的字段贩幻,功能一樣,都是控制緩存的有效時(shí)間两嘴。當(dāng)這兩個(gè)字段同時(shí)出現(xiàn)時(shí)丛楚,Cache-Control 是高優(yōu)化級(jí)的。

Etag 也是和 Last-Modified 一樣憔辫,對(duì)文件進(jìn)行標(biāo)識(shí)的字段趣些。不同的是,Etag 的取值是一個(gè)對(duì)文件進(jìn)行標(biāo)識(shí)的特征字串贰您。在向服務(wù)器查詢文件是否有更新時(shí)坏平,瀏覽器通過(guò) If-None-Match 字段把特征字串發(fā)送給服務(wù)器拢操,由服務(wù)器和文件最新特征字串進(jìn)行匹配,來(lái)判斷文件是否有更新舶替。沒(méi)有更新回包304令境,有更新回包200。Etag 和 Last-Modified 可根據(jù)需求使用一個(gè)或兩個(gè)同時(shí)使用顾瞪。兩個(gè)同時(shí)使用時(shí)舔庶,只要滿足基中一個(gè)條件,就認(rèn)為文件沒(méi)有更新玲昧。

另外有兩種特殊的情況:

手動(dòng)刷新頁(yè)面(F5)栖茉,瀏覽器會(huì)直接認(rèn)為緩存已經(jīng)過(guò)期(可能緩存還沒(méi)有過(guò)期),在請(qǐng)求中加上字段:Cache-Control:max-age=0孵延,發(fā)包向服務(wù)器查詢是否有文件是否有更新吕漂。

強(qiáng)制刷新頁(yè)面(Ctrl+F5),瀏覽器會(huì)直接忽略本地的緩存(有緩存也會(huì)認(rèn)為本地沒(méi)有緩存)尘应,在請(qǐng)求中加上字段:Cache-Control:no-cache(或 Pragma:no-cache)惶凝,發(fā)包向服務(wù)重新拉取文件。


在所有瀏覽器中犬钢,任何cookie大小超過(guò)限制都被忽略苍鲜,且永遠(yuǎn)不會(huì)被設(shè)置。

html5提供了兩種在客戶端存儲(chǔ)數(shù)據(jù)的新方法:localStorage 和 sessionStorage, 它們都是以key/value 的形式來(lái)存儲(chǔ)數(shù)據(jù)玷犹,前者是永久存儲(chǔ)混滔,后者的存儲(chǔ)期限僅限于瀏覽器會(huì)話(session),即當(dāng)瀏覽器窗口關(guān)閉后,sessionStorage中的數(shù)據(jù)被清除歹颓。

localStorage的存儲(chǔ)空間大約5M左右(不同瀏覽器可能不同坯屿,分 HOST),這個(gè)相當(dāng)于一個(gè)5M大小的前端頁(yè)面的數(shù)據(jù)庫(kù)巍扛,相比于cookie可以節(jié)約帶寬领跛,但localStorage在瀏覽器隱私模式下是不可讀取的,當(dāng)存儲(chǔ)數(shù)據(jù)超過(guò)了localStorage的存儲(chǔ)空間后會(huì)拋出異常撤奸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吠昭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胧瓜,更是在濱河造成了極大的恐慌矢棚,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷痪,死亡現(xiàn)場(chǎng)離奇詭異幻妓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門肉津,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)强胰,“玉大人,你說(shuō)我怎么就攤上這事妹沙∨佳螅” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵距糖,是天一觀的道長(zhǎng)玄窝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)悍引,這世上最難降的妖魔是什么恩脂? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮趣斤,結(jié)果婚禮上俩块,老公的妹妹穿的比我還像新娘。我一直安慰自己浓领,他們只是感情好玉凯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著联贩,像睡著了一般漫仆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泪幌,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天盲厌,我揣著相機(jī)與錄音,去河邊找鬼祸泪。 笑死狸眼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浴滴。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岁钓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼升略!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起屡限,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤品嚣,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钧大,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翰撑,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年啊央,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眶诈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涨醋。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逝撬,靈堂內(nèi)的尸體忽然破棺而出浴骂,到底是詐尸還是另有隱情,我是刑警寧澤宪潮,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布溯警,位于F島的核電站,受9級(jí)特大地震影響狡相,放射性物質(zhì)發(fā)生泄漏梯轻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一尽棕、第九天 我趴在偏房一處隱蔽的房頂上張望喳挑。 院中可真熱鬧,春花似錦萄金、人聲如沸蟀悦。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)日戈。三九已至,卻和暖如春孙乖,著一層夾襖步出監(jiān)牢的瞬間浙炼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工唯袄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弯屈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓恋拷,卻偏偏與公主長(zhǎng)得像资厉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔬顾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容