PHP核心技術(shù)與技術(shù)實(shí)踐---緩存詳解

8.1.1 為什么使用緩存

???????? 1洋只、NoSQL指的是Not only Sql? 而不是 No Sql,作為一種統(tǒng)稱盗痒,包括了k-v的數(shù)據(jù)庫(kù)和內(nèi)存管理

?????? 2挖胃、緩存的三個(gè)要素:命中率,緩存更新策略、緩存最大數(shù)據(jù)量

8.1.2??? 命中率

?????? 1、命中率是指請(qǐng)求緩存次數(shù)和返回正確次數(shù)的比例。(正相關(guān))

?????? 2俐筋、Query Cache:將SQL語(yǔ)句以及結(jié)果做HASH映射后保存在一定的內(nèi)存區(qū)域。

?????? 3严衬、只有Select語(yǔ)句會(huì)被緩存

?????? 4澄者、命中率hit = Qcache_queries_in_cache / Com_select

?????? 5、如果數(shù)據(jù)經(jīng)常更新请琳,QueryCache就會(huì)失效粱挡,甚至造成負(fù)擔(dān)

8.1.3??? 緩存更新策略(以Query Cache為例)

?????? 1、FIFO先進(jìn)先出策略(MySql就是使用這種)

?????? 2俄精、LFU策略:最少使用的元素會(huì)被清理

?????? 3询筏、LRU策略:最近最少使用的元素被清理。

8.1.4??? 緩存最大數(shù)據(jù)量

?????? 1竖慧、緩存最大數(shù)據(jù)量對(duì)于像數(shù)據(jù)庫(kù)這種嫌套,則是由參數(shù)決定逆屡;對(duì)于基于內(nèi)存的k-v,則是由OS決定的踱讨。

?????? 2魏蔗、超過(guò)緩存最大數(shù)據(jù)量一般會(huì)做如下處理:

[if !supportLists]l? [endif]停止緩存服務(wù),所有緩存數(shù)據(jù)被清空

[if !supportLists]l? [endif]拒絕寫(xiě)入痹筛,不再對(duì)緩存進(jìn)行更新

[if !supportLists]l? [endif]根據(jù)緩存更新策略清除舊數(shù)據(jù)

[if !supportLists]l? [endif]在上一個(gè)方案的基礎(chǔ)上莺治,對(duì)舊數(shù)據(jù)進(jìn)行備份

8.2.1??? 文件緩存機(jī)制

?????? 1、模板的作用之一就是把動(dòng)態(tài)PHP代碼“編譯”成靜態(tài)的HTML代碼帚稠,思路:

[if !supportLists]a)??????[endif]判斷是否需要緩存

[if !supportLists]b)?????[endif]判斷是否存在對(duì)應(yīng)的靜態(tài)文件

[if !supportLists]c)??????[endif]判斷靜態(tài)文件是否過(guò)期

8.2.2??? 文件緩存開(kāi)源產(chǎn)品Secache

8.3 Opcode緩存

?????? 1谣旁、一個(gè)PHP運(yùn)行完,所有的變量都會(huì)被回收翁锡,這樣可以避免內(nèi)存泄漏蔓挖,但同樣無(wú)法復(fù)用之前的數(shù)據(jù)夕土,因此Opcode就產(chǎn)生了馆衔。

?????? 2、php的語(yǔ)言引擎Zend執(zhí)行php代碼時(shí)候怨绣,會(huì)把代碼經(jīng)過(guò)分成Token角溃,詞法分析過(guò)程轉(zhuǎn)成Opcode的過(guò)程。

8.3.1??? eAccelerato下載及使用

8.4 客戶端緩存

[if !supportLists]1.??????[endif]客戶端緩存規(guī)則

[if !supportLists]a)??????[endif]如果響應(yīng)頭告訴緩存器不要緩存篮撑,緩存器就不會(huì)緩存

[if !supportLists]b)?????[endif]如果請(qǐng)求信息帶有認(rèn)證或者安全加密的减细,相應(yīng)內(nèi)容不會(huì)緩存

[if !supportLists]c)??????[endif]如果回應(yīng)中不存在校驗(yàn)器(ETag或者Last-Modified頭信息),緩存服務(wù)器會(huì)認(rèn)為缺乏直接更新度信息赢笨,內(nèi)容不緩存

[if !supportLists]2.??????[endif]HTTP協(xié)議中的緩存使用

[if !supportLists]a)??????[endif]三個(gè)標(biāo)識(shí)Last-Modified?? Expires???? ETag

[if !supportLists]?????????????????????????????????????i.?????????????[endif]Expires:過(guò)期時(shí)間,HTTP的日期時(shí)間是格林威治時(shí)間GMT萧吠,而不是本地時(shí)間

[if !supportLists]???????????????????????????????????ii.?????????????[endif]Cache-Control:響應(yīng)頭信息纸型,通過(guò)這個(gè)屬性可以讓網(wǎng)站owner全面控制內(nèi)容

[if !supportLists]?????????????????????????????????iii.?????????????[endif]ETag:服務(wù)器生成的唯一標(biāo)識(shí)符狰腌,“被請(qǐng)求變量的實(shí)體標(biāo)志”琼腔,給URL的唯一標(biāo)記踱葛。

[if !supportLists]b)?????[endif]一些小竅門(mén)

[if !supportLists]?????????????????????????????????????i.?????????????[endif]不經(jīng)常改變圖片或者頁(yè)面 啟用緩存,使用Cache-Control:max-age屬性設(shè)置一個(gè)較長(zhǎng)的過(guò)期時(shí)間教馆。

[if !supportLists]???????????????????????????????????ii.?????????????[endif]定期更新的內(nèi)容設(shè)置一個(gè)緩存服務(wù)器可識(shí)別的max-age屬性或過(guò)期時(shí)間

[if !supportLists]?????????????????????????????????iii.?????????????[endif]盡量不使用POST土铺,因?yàn)镻OST返回的內(nèi)容大部分緩存服務(wù)器不會(huì)緩存板鬓。

[if !supportLists]????????????????????????????????iv.?????????????[endif]不要在URL中加入對(duì)每個(gè)用戶的識(shí)別信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末后德,一起剝皮案震驚了整個(gè)濱河市抄腔,隨后出現(xiàn)的幾起案子赫蛇,更是在濱河造成了極大的恐慌悟耘,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異管行,居然都是意外死亡病瞳,警方通過(guò)查閱死者的電腦和手機(jī)套菜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)逗柴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)戏溺,“玉大人旷祸,你說(shuō)我怎么就攤上這事∩眨” “怎么了赃绊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵碧查,是天一觀的道長(zhǎng)忠售。 經(jīng)常有香客問(wèn)我档痪,道長(zhǎng)邢滑,這世上最難降的妖魔是什么愿汰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任摇予,我火速辦了婚禮吗跋,結(jié)果婚禮上跌宛,老公的妹妹穿的比我還像新娘疆拘。我一直安慰自己,他們只是感情好隆圆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布渺氧。 她就那樣靜靜地躺著阶女,像睡著了一般秃踩。 火紅的嫁衣襯著肌膚如雪憔杨。 梳的紋絲不亂的頭發(fā)上蒜胖,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天寻狂,我揣著相機(jī)與錄音蛇券,去河邊找鬼樊拓。 笑死蒂胞,一個(gè)胖子當(dāng)著我的面吹牛条篷,可吹牛的內(nèi)容都是我干的赴叹。 我是一名探鬼主播稚瘾,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丢烘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼播瞳!你這毒婦竟也來(lái)了忧侧?” 一聲冷哼從身側(cè)響起蚓炬,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驯击,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體暇矫,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杀餐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年枉长,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了必峰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粒蜈,死狀恐怖枯怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寿冕,我是刑警寧澤存捺,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布肖油,位于F島的核電站臂港,受9級(jí)特大地震影響森枪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜审孽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一县袱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佑力,春花似錦式散、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至编饺,卻和暖如春乖篷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背透且。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工撕蔼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓鲸沮,卻偏偏與公主長(zhǎng)得像畅形,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诉探,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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

  • 我得定義方式:sudo defaults write /Library/Preferences/SystemCon...
    wasw100閱讀 959評(píng)論 0 1
  • 已經(jīng)潛水好幾天了日熬,一直想等自己準(zhǔn)備好了在說(shuō),可是每天看到貓友們那么有活力那么積極向上的時(shí)候心里又會(huì)有個(gè)聲音不...
    靈犀victory閱讀 203評(píng)論 5 3
  • 2018.1.19農(nóng)歷2017年12月3日 星期5 睛轉(zhuǎn)陰 1.扎根三年肾胯,堅(jiān)持早起 YY頻道學(xué)習(xí)第073天竖席。 2...
    _紫霞閱讀 110評(píng)論 0 0
  • let ScrW = UIScreen.main.bounds.size.width let ScrH = UIS...
    一世滄桑畫(huà)閱讀 214評(píng)論 0 0