成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

系統講解PHP緩存技術

本篇文章給大家帶來了關于PHP的相關知識,其中主要介紹了緩存技術的相關內容,緩存已經成了項目中必不可少的一部分,是提高性能最好的方式,下面一起來看一下,希望對大家有幫助。

系統講解PHP緩存技術

概述

系統講解PHP緩存技術

緩存已經成了項目中是必不可少的一部分,它是提高性能最好的方式,例如減少網絡I/O、減少磁盤I/O 等,使項目加載速度變的更快。

緩存可以是CPU緩存、內存緩存、硬盤緩存,不同的緩存查詢速度也不一樣(CPU緩存 優于 內存緩存 優于 硬盤緩存)。

接下來,給大家逐一進行介紹。

瀏覽器緩存

瀏覽器將請求過的頁面存儲在客戶端緩存中,當訪問者再次訪問這個頁面時,瀏覽器就可以直接從客戶端緩存中讀取數據,減少了對服務器的訪問,加快了網頁的加載速度。

強緩存

用戶發送的請求,直接從客戶端緩存中獲取,不請求服務器。

根據 Expires 和 Cache-Control 判斷是否命中強緩存。

代碼如下:

header('Expires: '. gmdate('D, d M Y H:i:s', time() + 3600). ' GMT'); header("Cache-Control: max-age=3600"); //有效期3600秒
登錄后復制

Cache-Control 還可以設置以下參數:

  • public:可以被所有的用戶緩存(終端用戶的瀏覽器/CDN服務器)

  • private:只能被終端用戶的瀏覽器緩存

  • no-cache:不使用本地緩存

  • no-store:禁止緩存數據

協商緩存

用戶發送的請求,發送給服務器,由服務器判定是否使用客戶端緩存。

代碼如下:

$last_modify = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); if (time() - $last_modify < 3600) {    header('Last-Modified: '. gmdate('D, d M Y H:i:s', $last_modify).' GMT');    header('HTTP/1.1 304'); //Not Modified    exit; } header('Last-Modified: '. gmdate('D, d M Y H:i:s').' GMT');
登錄后復制

用戶操作行為對緩存的影響

系統講解PHP緩存技術

文件緩存

數據文件緩存

將更新頻率低,讀取頻率高的數據,緩存成文件。

比如,項目中多個地方用到城市數據做三級聯動,我們就可以將城市數據緩存成一個文件(city_data.json),JS 可以直接讀取這個文件,無需請求后端服務器。

全站靜態化

CMS(內容管理系統),也許大家都比較熟悉,比如早期的 DEDE、PHPCMS,后臺都可以設置靜態化HTML,用戶在訪問網站的時候讀取的都是靜態HTML,不用請求后端的數據庫,也不用Ajax請求數據接口,加快了網站的加載速度。

靜態化HTML有以下優點:

  • 有利于搜索引擎的收錄(SEO)

  • 頁面打開速度快

  • 減少服務器負擔

CDN緩存

CDN(Content Delivery Network)內容分發網絡。

用戶訪問網站時,自動選擇就近的CDN節點內容,不需要請求源服務器,加快了網站的打開速度。

緩存主要包括 HTML、圖片、CSS、JS、XML 等靜態資源。

NoSQL緩存

Memcached 緩存

Memcached 是高性能的分布式內存緩存服務器。

一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

它也能夠用來存儲各種格式的數據,包括圖像、視頻、文件等。

Memcached 僅支持K/V類型的數據,不支持持久化存儲。

Memcache 與 Memcached 的區別

Memcached 從0.2.0開始,要求PHP版本>=5.2.0,Memcache 要求PHP版本>=4.3。

Memcached 最后發布時間為2018-12-24,Memcache 最后發布時間2013-04-07。

Memcached 基于libmemcached,Memcache 基于PECL擴展。

可以將 Memcached 看作是 Memcache 的升級版。

PHP Memcached 使用手冊:

http://www.php.net/manual/zh/book.memcached.php

Memcached 經常拿來與 Redis 做對比,接下來介紹下 Redis 緩存。

Redis緩存

Redis 是一個高性能的 K/V 數據庫。

Redis 很大程度補償了 Memcached K/V存儲的不足,比如 List(鏈表)、Set(集合)、Zset(有序集合)、Hash(散列),既可以將數據存儲在內存中,也可以將數據持久化到磁盤上,支持主從同步。

總的來說,可以將 Redis 看作是 Memcached 的擴展版,更加重量級,功能更強大。

Redis 在日常工作中使用的居多。

Redis 學習網址:http://www.redis.cn/

MongoDB緩存

MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。

旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。

MongoDB 學習網址:http://www.mongodb.org.cn

WEB服務器緩存

Apache緩存

利用 mod_expires ,指定緩存的過期時間,可以緩存HTML、圖片、JS、CSS 等。

打開 http.conf,開啟模塊:

LoadModule expires_module modules/mod_expires.so
登錄后復制

指定緩存的過期時間:

<IfModule expires_module>     #打開緩存     ExpiresActive on     #css緩存(8640000秒=10天)     ExpiresByType text/css A8640000     #js緩存     ExpiresByType application/x-javascript A8640000     ExpiresByType application/javascript A8640000     #html緩存     ExpiresByType text/html A8640000     #圖片緩存     ExpiresByType image/jpeg A8640000     ExpiresByType image/gif A8640000     ExpiresByType image/png A8640000     ExpiresByType image/x-icon A8640000 </IfModule>
登錄后復制

Nginx緩存

利用 expire 參數,指定緩存的過期時間,可以緩存HTML、圖片、JS、CSS 等。

打開 nginx.conf :

//以圖片為例: location ~.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的location    root html;    expires 1d; #指定緩存時間 }
登錄后復制

大家也可以了解下:proxycachepath 和 proxy_cache,進行緩存的設置。

Opcode緩存

Opcode(Operate Code)操作碼。

PHP程序運行完后,馬上釋放所有內存,所有程序中的變量都銷毀,每次請求都要重新翻譯、執行,導致速度可能會偏慢。

當解釋器完成對腳本代碼的分析后,便將它們生成可以直接運行的中間代碼,也稱為操作碼。

操作碼 的目地是避免重復編譯,減少CPU和內存開銷。

APC緩存

APC(Alternative PHP Cache)可選 PHP 緩存。

APC 的目標是提供一個自由、 開放,和健全的框架,用于緩存、優化 PHP 中間代碼。

APC 可以去掉 php 動態解析以及編譯的時間,使php腳本可以執行的更快。

APC 擴展最后的發布時間為 2012-09-03。

感興趣可以了解下,官方介紹:http://php.net/manual/zh/book.apc.php

eAccelerator

eAccelerator:A PHP opcode cache。

感興趣可以了解下,官方介紹:http://eaccelerator.net/

XCache

XCache 是一個又快又穩定的 PHP opcode 緩存器。

感興趣可以了解下,官方介紹:http://xcache.lighttpd.net/

小結

文章主要簡單的介紹了 瀏覽器緩存、文件緩存、NoSQL緩存、WEB服務器緩存、Opcode緩存。

每一種緩存都可以深入研究,從介紹 -> 安裝 -> 使用 -> 總結應用場景。

大家可以思考下,通過上面的介紹,工作中我們使用了哪些緩存?

還可以再使用哪些緩存,可以對我們的項目有幫助?

關于緩存的常見問題

用過緩存,大家肯定遇到過比較頭痛的問題,比如數據一致性,雪崩,熱點數據緩存,緩存監控等等。

給大家列出幾個問題,純屬拋轉引玉。

當項目中使用到緩存,我們是選擇 Redis 還是 Memcached ,為什么?

舉一些場景:

一、比如實現一個簡單的日志收集功能或發送大量短信、郵件的功能,實現方式是先將數據收集到隊列中,然后有一個定時任務去消耗隊列,處理該做的事情。

直接使用 Redis 的 lpush,rpop 或 rpush,lpop。

//進隊列 $redis->lpush(key, value); //出隊列 $redis->rpop(key); Memcached 沒有這種數據結構。
登錄后復制

二、比如我們要存儲用戶信息,ID、姓名、電話、年齡、身高 ,怎么存儲?

方案一:key => value

key = userdata用戶ID

value = json_encode(用戶數據)

查詢時,先取出key,然后進行json_decode解析。

方案二:hash

key = userdata用戶ID

hashKey = 姓名,value = xx

hashKey = 電話,value = xx

hashKey = 年齡,value = xx

hashKey = 身高,value = xx

查詢時,取出key即可。

//新增 $redis->hSet(key, hashKey, value); $redis->hSet(key, hashKey, value); $redis->hSet(key, hashKey, value); //編輯 $redis->hSet(key, hashKey, value); //查詢 $redis->hGetAll(key); //查詢所有屬性 $redis->hGet(key, hashKey); //查詢某個屬性
登錄后復制

方案二 優于 方案一。

三、比如社交項目類似于新浪微博,個人中心的關注列表和粉絲列表,雙向關注列表,還有熱門微博,還有消息訂閱 等等。

以上都用 Redis 提供的相關數據結構即可。

四、Memcached 只存儲在內存中,而 Redis 既可以存儲在內存中,也可以持久化到磁盤上。

如果需求中的數據需要持久化,請選擇 Redis 。

個人在工作中沒有用到 Memcached ,通過查詢資料得到 Memcached 內存分配時優于 Redis。

Memcached 默認使用 Slab Allocation 機制管理內存,按照預先規定的大小,將分配的內存分割成特定長度的塊以存儲相應長度的key-value數據記錄,以完全解決內存碎片問題。

如何保證,緩存與數據庫的數據一致性?

新增數據:先新增到數據庫,再新增到緩存。

編輯數據:先刪除緩存數據,再修改數據庫中數據,再新增到緩存。

刪除數據:先刪除緩存數據,再刪除數據庫中數據。

查詢數據:先查詢緩存數據,沒有,再查詢數據庫,再新增到緩存。

強一致性是很難保證的,比如事務一致性,時間點一致性,最終一致性等。

具體問題具體分析吧。

緩存穿透怎么辦?

用戶請求緩存中不存在的數據,導致請求直接落在數據庫上。

一、設置有規則的Key值,先驗證Key是否符合規范。

二、接口限流、降級、熔斷,請研究 istio:https://istio.io/

三、布隆過濾器。

四、為不存在的key值,設置空緩存和過期時間,如果存儲層創建了數據,及時更新緩存。

雪崩怎么辦?

一、互斥鎖,只允許一個請求去重建索引,其他請求等待緩存重建執行完,重新從緩存獲取數據。

系統講解PHP緩存技術

二、雙緩存策略,原始緩存和拷貝緩存,當原始緩存失效請求拷貝緩存,原始緩存失效時間設置為短期,拷貝緩存設置為長期。

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
欧美国产成人精品一区二区三区| 亚洲AV成人精品日韩一区麻豆| 亚洲欧洲综合有码无码| 成人片黄网站A毛片免费| 精品深夜AV无码一区二区老年 | 男女一起差差差差差| 性色AV 一区二区三区| YY影院电视剧大全| 久久精品人人做人人综合试看| 熟女CHACHACHA性少妇| 337P日本欧洲亚洲大胆在线| 黑人上司好猛我好爽中文字幕| 日韩精品人妻系列无码AV东京| 伊人色综合九久久天天蜜桃| 国产麻豆成人传媒免费观看| 人妻AV无码专区| 亚洲伊人久久综合| 国产精品国产三级国产AV′| 青草青草久热精品视频国产4| 野花在线高清视频| 国产专区一线二线三线品牌东 | 无码人妻一区二区三区在线视频 | 国模GOGO大尺度尿喷人体| 日韩免费A级毛片无码A∨| 中文字幕一区日韩精品| 精品国产麻豆免费人成网站| 四川妇女BBBWBBBWM| ZOOM人与ZOOM| 美女扒开尿口让男人桶进| 亚洲国产天堂久久综合226| 国产超碰人人爽人人做| 人妻无码ΑV中文字幕久久琪琪布| 曰韩无码AV一区二区免费| 国内自产少妇自拍区免费| 牲交A欧美牲交AⅤ免费一| WYC忘忧草在线看WWW| 蜜臀AV性久久久久蜜臀AⅤ麻豆| 亚洲精品国产AV成拍色拍婷婷| 国产精品麻豆成人AV电影| 日韩人妻精品一区二区三区视频| AV无码波多野结衣| 美丽人妻在夫前被黑人| 亚洲中文无码A∨在线观看| 狠狠躁夜夜躁人人躁婷婷| 无码夫の前で人妻を犯す中字 | 国产乱子经典视频在线观看| 少妇┅┅快┅┅用力| 办公室的秘密2中文字幕| 哦┅┅快┅┅用力啊┅警花少妇 | 日韩免费无码专区精品观看| JAPANESE強姦するAV| 妺妺和我裸睡玩我下春雨医生| 一区二区三区AV高清免费波多| 精品伊人久久大线蕉色首页| 亚洲成AV人片在线观看无APP| 国产免费拔擦拔擦8X高清在线人 | 99久久久无码国产精品秋霞网| 门徒电影高清完整版在线观看| 伊人久久大香线蕉无码不卡| 久久久G0G0午夜无码精品| 亚洲乱码国产乱码精品精| 黑人与日本XXXXXTV| 亚洲AV成人一区二区三区网站 | 午夜亚洲WWW湿好大| 国产精品高潮呻吟AV久久无码| 熟女肥臀av二区三区四区| 疯狂做受XXXⅩ高潮高潮按摩| 日本AⅤ精品一区二区三区| 把腿张开老子臊烂你的动漫| 人善交VIDEO另类HD| 被邻居侵犯性HD中文字幕| 人人妻人人爽人人做夜欢视频九色 | 国产成人无码AⅤ片在线观看视频 国产成人无码AⅤ片在线观看你 | 亚洲国产AV一区二区三区四区 | 亚洲人成网站18禁止| 久久99久久99精品免观看吃奶| 亚洲乱码中文字幕综合234| 精品国产乱码久久久久久软件大全| 亚洲精品无码专区| 久久精品国产亚洲AV果冻传媒| 亚洲欲色欲色XXXXX在线| 久久久综合香蕉尹人综合网| 在线观看无码AV网站永久免费| 免费观看30分钟哔哩哔哩视频 | 国产精品亚洲А∨天堂2018| 亚洲A∨精品一区二区三区下载| 国语自产偷拍精品视频| 亚洲国产中文在线二区三区免| 精品无码一区二区三区爱欲| 亚洲在AV极品无码天堂手机版| 老师上课没戴奶罩看到奶头| 1000部拍拍拍18勿入免费视频下载 | 国产高清午夜人成在线观看| 亚洲 无码 国产精品| 火车上荫蒂添的好舒服视频| 亚洲伊人久久综合成人网站| 免费网站看V片在线18禁| FREE性丰满白嫩白嫩的HD| 日本边添边摸边做边爱边| 丰满少妇人妻HD高清大乳在线| 无线乱码不卡一二三四破解版| 国语偷拍人妻露脸| 夜夜高潮夜夜爽夜夜爱爱一区| 蜜桃视频一区二区三区| AV区无码字幕中文色| 肉身避风港1978大米星球| 国产精品99久久免费观看| 亚洲AV永久无码精品无码四虎 | 精品人无码一区二区三区| 中文乱码字幕高清一区二区| 热RE99久久精品国99热| 国产成人亚洲综合网站小说| 亚洲成A人片在线观看无码3D| 久久综合激的五月天的歌词| EEUSS鲁片一区二区三区| 少妇高潮喷水久久久久久久久久| 国产一区二区三区水蜜桃| 夜夜爽一区二区三区精品| 欧美性猛交XXXX免费看蜜桃| 国产AV一区二区三区| 亚洲国产精品久久久久久无码| 免费AV大片在线观看入口| 成人午夜无码国产| 亚洲AV无码成人精品区在线欢看| 快添捏我奶头我快受不了了动态图| 啊轻点灬大JI巴太粗太长在线了| 婷婷5月女内射AV| 精品国产青草久久久久福利| 7777精品伊人久久久大香线蕉| 色翁荡息又大又硬又粗又爽| 狠狠色噜噜狠狠狠777米奇小说| 专干熟肥老妇人视频在线看| 熟睡入侵JEALOUSVUE| 精品无码国产自产拍在线观看蜜桃 | 亚洲精品无码激情AV| 欧美精产国品一二三产品区别 | 猫咪AV成人永久网站| 成人免费无码不卡毛片视频| 亚洲AV日韩精品久久久久久| 麻豆国产AV超爽剧情系列| 大荫蒂又大又长又硬又紧又粗| 亚洲国产美女精品久久久久∴| 欧美XXXX做受欧美88XX| 国产精品久久久久一区二区三区| 一二三四视频中文字幕| 色偷拍 自怕 亚洲 10P| 精品无码人妻夜人多侵犯18| 啊灬用力灬啊灬啊灬啊灬| 亚洲AV永久无码精品九九| 欧美XXXxX高潮喷水| 国产精品爽爽V在线观看无码 | 八旬老太太BGMBGMBGM性| 亚洲AV蜜桃永久无码精品| 女儿国免费观看完整版在线 | 日韩人妻中文无码一区二区七区 | CHINESE农村野外XXXXVIDEOS| 亚州v不卡ww在线| 欧美Z0ZO人禽交| 国产一区二区三区导航| 99无人区码一码二码三码...| 西西人体自慰扒开下部93| 哦┅┅快┅┅用力啊┅┅在线观看 | 91人妻人人做人碰人人爽九色| 性刺激性色爽爱小说| 欧美狂野乱码一二三四区| 国产玉足榨精视频在线观看| 18亚洲AV无码成人网站国产| 性高湖久久久久久久久| 欧美乱妇高清无乱码免费| 狠狠色噜噜狠狠狠7777米奇| 波多野结衣与黑人AV| 亚洲伊人久久大香线蕉AV| 天天AV天天翘天天综合网色鬼| 免费女人18毛片A级毛片视频| 国产亚洲AV☆浪潮在线观看| 扒开双腿疯狂进出爽爽爽动态图| 亚洲色欲一区二区三区在线观看| 少妇饥渴偷公乱第一章全文| 免费A级毛片无码A∨中文字幕下 | 少妇无码太爽了在线播放| 免费国产无人区码卡二卡3卡| 国产又黄又大又粗视频| 爆乳熟妇一区二区三区| 一本一道波多野结衣AV一区 | 国产又爽又粗又猛的视频| 本道久久综合无码中文字幕| 一本久久A精品一区二区| 午夜无码性爽快影院6080| 人妻丰满熟妇AV无码| 久久久久久A亚洲欧洲AV| 国产精品国产三级国产AV主播 | 国色天香十七区品质怎么样| 菲律宾一大学发生爆炸| 8V蜜桃网最新电影| 亚洲老妈激情一区二区三区| 天天躁日日躁狠狠躁性色AVQ| 欧美亚洲国产精品久久高清| 久久伊人精品一区二区三区| 和朋友换娶妻野外夫妇3| 国产成人麻豆亚洲综合无码精品 |