偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

圖片存儲架構(gòu)學(xué)習(xí):緩存,架構(gòu)師的美麗小三

開發(fā) 架構(gòu) 存儲架構(gòu)
這篇文章主要來談?wù)劸彺婕夹g(shù)在圖片存儲架構(gòu)中的重要地位,并一起來探索一下實(shí)現(xiàn)圖片緩存的方案。我個人的觀點(diǎn)是:一個性能優(yōu)良的、擴(kuò)展性強(qiáng)的大型系統(tǒng),勢必要緩存一切可以緩存的資源,因?yàn)闆]有什么比在內(nèi)存中操作更快的了(CPU不算,那里可存的空間太小了)。

前言

在上一篇中,我強(qiáng)行拆散了WEB服務(wù)器和圖片服務(wù)器這對戀人,這樣做或許有點(diǎn)不太厚道,但對于他們未來各自的發(fā)展絕對有好處,不久的將來,他們會感謝我的。

好了,回到今天的話題,今天這篇文章主要來談?wù)劸彺婕夹g(shù)在圖片存儲架構(gòu)中的重要地位,并一起來探索一下實(shí)現(xiàn)圖片緩存的方案。我個人的觀點(diǎn)是:一個性能優(yōu)良的、擴(kuò)展性強(qiáng)的大型系統(tǒng),勢必要緩存一切可以緩存的資源,因?yàn)闆]有什么比在內(nèi)存中操作更快的了(CPU不算,那里可存的空間太小了)。

PS:本文部分內(nèi)容將有空空老師友情出演。

為什么要緩存圖片

簡單的說緩存可以通過直接訪問內(nèi)存來提高圖片讀取速度,緩解因站點(diǎn)高訪問量而帶來的圖片I/O瓶頸。很多時候,圖片是一類不經(jīng)常更新的靜態(tài)資源,是典型的讀遠(yuǎn)大于寫的情況,因此完全滿足緩存的原則:一次寫入,無數(shù)次讀取。當(dāng)然也不是所有滿足這點(diǎn)的都會用到緩存,比如上次寫的那篇優(yōu)酷網(wǎng)架構(gòu)學(xué)習(xí)筆記中就提到,優(yōu)酷網(wǎng)在存儲視頻時并沒有大量采用視頻緩存技術(shù),原因有二:

  1. Squid 的 write() 用戶進(jìn)程空間有消耗,Lighttpd 1.5 的 AIO(異步I/O) 讀取文件到用戶內(nèi)存導(dǎo)致效率也比較低下,這是內(nèi)存鎖造成的。
  2. 如接到老大哥通知要把某個視頻撤下來,如果在緩存里是比較麻煩的(這個是亮點(diǎn),O(∩_∩)O)

但總的來說,對于像圖片、視頻之類的靜態(tài)文件,還是非常適合做緩存的。緩存永遠(yuǎn)是架構(gòu)師的美麗小三,哈哈。

圖片緩存方案探究

接下來就重點(diǎn)來探究一下實(shí)現(xiàn)圖片緩存的具體方案,文章盡量按人的正常思維來步步深入,從簡單到復(fù)雜,一起來看看吧,希望看完后能略微提升你的設(shè)計(jì)品味。時尚的設(shè)計(jì)是一個不斷推敲和磨合的過程,這個相信各位程序猿和攻城獅都深有體會吧。關(guān)于這一塊,我將分2篇文章來解說,這一篇先介紹如何在IIS等 web容器中設(shè)置Http Headers來實(shí)現(xiàn)圖片的緩存。

注意:這里的web容器是指IIS、Tomcat或者其他的WEB服務(wù)器軟件,下面我以IIS來舉例。

IIS中的緩存分為服務(wù)器緩存客戶端緩存,對于靜態(tài)資源(html、css、js、圖片等),服務(wù)器緩存是默認(rèn)開啟的,也就是我們在向服務(wù)器請求靜態(tài)資源時,服務(wù)器是先從其內(nèi)存中取文件的,取不到再去硬盤中找(真累?。。?,有時候開啟服務(wù)器緩存很讓人討厭,后面我們會提到??蛻舳司彺骖櫭剂x是把待請求的資源緩存在客戶端的,用戶請求資源時先從本地找,找不到再去麻煩服務(wù)器。下面先具體談?wù)効蛻舳司彺妗?/p>

1、客戶端緩存

如何設(shè)置呢?請看下圖


圖片來源

上圖表明開啟IIS的緩存模塊,并設(shè)置過期時間為1天,也就是1天之內(nèi),用戶訪問這張圖片時均可以從其本地的緩存副本中讀取,而不必來服務(wù)器下載,當(dāng)然1天之后,緩存失效,圖片下載后又重新會被載入瀏覽器緩存中。當(dāng)然這種方式需要你有管理IIS的權(quán)限,我想作為架構(gòu)師的你這點(diǎn)權(quán)限算個皮毛啊。

這個什么原理呀?別急,請聽我娓娓道來,小伙子要耐心

這個主要是靠Http Headers來控制的,Http Headers是HTTP請求(Request)和響應(yīng)(Response)的核心,它承載了關(guān)于客戶端瀏覽器,請求頁面,服務(wù)器等相關(guān)的信息。簡單地說,它是瀏覽器和服務(wù)器之間交互的信息牌,瀏覽器通過它告知服務(wù)器客戶端的相關(guān)信息和請求信息(比如我是什么類型的瀏覽器、我是否可以接收你服務(wù)器 gzip過的內(nèi)容、請求的長度是多少、是否允許緩存等等內(nèi)容);服務(wù)器通過它告知瀏覽器服務(wù)器響應(yīng)這次請求的相關(guān)信息(比如服務(wù)器變量、返回的長度、 cookie等信息),具體Http Headers的內(nèi)容可以參看這篇文章。

了解了Http Headers,那這個緩存問題就好解釋了,我的解釋如下:當(dāng)我屁顛屁顛地帶著這個Http Headers去向服務(wù)器請求空空老師的寫真圖片時,服務(wù)器提取出Http Headers發(fā)現(xiàn)其中的Cache-Control是Public的,也就是可以緩存的,然后服務(wù)器再看看自己設(shè)置的緩存過期時間,發(fā)現(xiàn)還沒過期,于是告訴我,小子,先在你本地去找空空老師的圖片吧,找不到再來向我要。于是我回去找了,發(fā)現(xiàn)本地真的有空空老師的寫真圖,他沒有騙我,好開心啊。

不知道我這樣解釋空空迷們懂了么?不管你懂不懂,我反正是懂了!當(dāng)然有不正確的地方請指出,謝謝。

2、服務(wù)器緩存

上面我已經(jīng)說過,IIS中的服務(wù)器緩存是默認(rèn)開啟的,IIS默認(rèn)會把靜態(tài)資源緩存起來,以便快速讀取,當(dāng)靜態(tài)文件有改動時,緩存也能夠自動更新。但是有一個很討厭的問題,假如我這些圖片都是大量的(幾百萬幾千萬)且都是實(shí)時更新的(比如股票行情圖),這樣問題來了,我這么多圖片一更新,IIS緩存還沒來得及更新(量實(shí)在是太TM大了),于是我會在很長一段時間內(nèi)訪問到的圖片都是舊版本的,這令炒股的我非常懊惱。那么既然它違背緩存的原則,我們怎么禁用它呢?方法絕對沒你想得那么簡單,我建議大家看看這篇文章,是直接修改MetaBase.xml文件,如果對服務(wù)器不熟的家伙是不敢隨便動這個文件的,不過架構(gòu)師的你嘛,這點(diǎn)小兒科了,哈哈哈。

通過上面的闡述,我想聰明的你應(yīng)該會使用這個最簡單的方法設(shè)置緩存了,如果你真的是很笨還木有理解,那么請先用你的左手打右手兩下,還不懂,那再用你的右手打左手兩下,我就這么打過來的,直到懂了為止,哈哈哈。

好了,以上是關(guān)于IIS中設(shè)置緩存的方法,這里好幾次引用了空空老師,讓您受累了,謝謝。

原文鏈接:http://www.itivy.com/ivy/archive/2012/2/18/image-storage-cache-1.html

責(zé)任編輯:林師授 來源: 青藤園
相關(guān)推薦

2019-10-21 09:32:48

緩存架構(gòu)分層

2019-10-30 16:24:34

分層架構(gòu)緩存

2013-04-19 15:12:17

架構(gòu)師WEB架構(gòu)師

2022-06-15 10:04:51

存儲選型MySQL

2020-08-24 08:50:12

架構(gòu)師TL技術(shù)

2009-12-18 10:22:50

Ray Ozzie架構(gòu)師

2012-08-04 16:02:00

架構(gòu)師

2012-02-17 10:00:15

圖片存儲圖片服務(wù)器架構(gòu)

2022-04-28 13:08:51

架構(gòu)師軟件

2019-09-27 09:56:31

軟件技術(shù)硬件

2020-01-16 15:35:00

高并發(fā)架構(gòu)服務(wù)器

2018-11-12 12:12:15

架構(gòu)師緩存數(shù)據(jù)庫

2015-12-09 15:16:03

架構(gòu)師京東架構(gòu)

2020-09-15 09:55:13

架構(gòu)師架構(gòu)選型

2012-03-21 17:30:21

百度架構(gòu)師

2024-10-09 08:22:45

2021-12-28 07:20:43

架構(gòu)師技術(shù)架構(gòu)

2018-07-03 15:46:24

Java架構(gòu)師源碼

2012-06-17 12:58:04

架構(gòu)師架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號