gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

系統(tǒng)講解PHP緩存技術(shù)

本篇文章給大家?guī)砹岁P(guān)于PHP的相關(guān)知識,其中主要介紹了緩存技術(shù)的相關(guān)內(nèi)容,緩存已經(jīng)成了項(xiàng)目中必不可少的一部分,是提高性能最好的方式,下面一起來看一下,希望對大家有幫助。

系統(tǒng)講解PHP緩存技術(shù)

概述

系統(tǒng)講解PHP緩存技術(shù)

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

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

接下來,給大家逐一進(jìn)行介紹。

瀏覽器緩存

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

強(qiáng)緩存

用戶發(fā)送的請求,直接從客戶端緩存中獲取,不請求服務(wù)器。

根據(jù) Expires 和 Cache-Control 判斷是否命中強(qiáng)緩存。

代碼如下:

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

Cache-Control 還可以設(shè)置以下參數(shù):

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

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

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

  • no-store:禁止緩存數(shù)據(jù)

協(xié)商緩存

用戶發(fā)送的請求,發(fā)送給服務(wù)器,由服務(wù)器判定是否使用客戶端緩存。

代碼如下:

$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');
登錄后復(fù)制

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

系統(tǒng)講解PHP緩存技術(shù)

文件緩存

數(shù)據(jù)文件緩存

將更新頻率低,讀取頻率高的數(shù)據(jù),緩存成文件。

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

全站靜態(tài)化

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

靜態(tài)化HTML有以下優(yōu)點(diǎn):

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

  • 頁面打開速度快

  • 減少服務(wù)器負(fù)擔(dān)

CDN緩存

CDN(Content Delivery Network)內(nèi)容分發(fā)網(wǎng)絡(luò)。

用戶訪問網(wǎng)站時,自動選擇就近的CDN節(jié)點(diǎn)內(nèi)容,不需要請求源服務(wù)器,加快了網(wǎng)站的打開速度。

緩存主要包括 HTML、圖片、CSS、JS、XML 等靜態(tài)資源。

NoSQL緩存

Memcached 緩存

Memcached 是高性能的分布式內(nèi)存緩存服務(wù)器。

一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性。

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

Memcached 僅支持K/V類型的數(shù)據(jù),不支持持久化存儲。

Memcache 與 Memcached 的區(qū)別

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

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

Memcached 基于libmemcached,Memcache 基于PECL擴(kuò)展。

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

PHP Memcached 使用手冊:

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

Memcached 經(jīng)常拿來與 Redis 做對比,接下來介紹下 Redis 緩存。

Redis緩存

Redis 是一個高性能的 K/V 數(shù)據(jù)庫。

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

總的來說,可以將 Redis 看作是 Memcached 的擴(kuò)展版,更加重量級,功能更強(qiáng)大。

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

Redis 學(xué)習(xí)網(wǎng)址:http://www.redis.cn/

MongoDB緩存

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

旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。

MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。

MongoDB 學(xué)習(xí)網(wǎng)址:http://www.mongodb.org.cn

WEB服務(wù)器緩存

Apache緩存

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

打開 http.conf,開啟模塊:

LoadModule expires_module modules/mod_expires.so
登錄后復(fù)制

指定緩存的過期時間:

<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>
登錄后復(fù)制

Nginx緩存

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

打開 nginx.conf :

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

大家也可以了解下:proxycachepath 和 proxy_cache,進(jìn)行緩存的設(shè)置。

Opcode緩存

Opcode(Operate Code)操作碼。

PHP程序運(yùn)行完后,馬上釋放所有內(nèi)存,所有程序中的變量都銷毀,每次請求都要重新翻譯、執(zhí)行,導(dǎo)致速度可能會偏慢。

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

操作碼 的目地是避免重復(fù)編譯,減少CPU和內(nèi)存開銷。

APC緩存

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

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

APC 可以去掉 php 動態(tài)解析以及編譯的時間,使php腳本可以執(zhí)行的更快。

APC 擴(kuò)展最后的發(fā)布時間為 2012-09-03。

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

eAccelerator

eAccelerator:A PHP opcode cache。

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

XCache

XCache 是一個又快又穩(wěn)定的 PHP opcode 緩存器。

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

小結(jié)

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

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

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

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

關(guān)于緩存的常見問題

用過緩存,大家肯定遇到過比較頭痛的問題,比如數(shù)據(jù)一致性,雪崩,熱點(diǎn)數(shù)據(jù)緩存,緩存監(jiān)控等等。

給大家列出幾個問題,純屬拋轉(zhuǎn)引玉。

當(dāng)項(xiàng)目中使用到緩存,我們是選擇 Redis 還是 Memcached ,為什么?

舉一些場景:

一、比如實(shí)現(xiàn)一個簡單的日志收集功能或發(fā)送大量短信、郵件的功能,實(shí)現(xiàn)方式是先將數(shù)據(jù)收集到隊(duì)列中,然后有一個定時任務(wù)去消耗隊(duì)列,處理該做的事情。

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

//進(jìn)隊(duì)列 $redis->lpush(key, value); //出隊(duì)列 $redis->rpop(key); Memcached 沒有這種數(shù)據(jù)結(jié)構(gòu)。
登錄后復(fù)制

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

方案一:key => value

key = userdata用戶ID

value = json_encode(用戶數(shù)據(jù))

查詢時,先取出key,然后進(jìn)行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); //查詢某個屬性
登錄后復(fù)制

方案二 優(yōu)于 方案一。

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

以上都用 Redis 提供的相關(guān)數(shù)據(jù)結(jié)構(gòu)即可。

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

如果需求中的數(shù)據(jù)需要持久化,請選擇 Redis 。

個人在工作中沒有用到 Memcached ,通過查詢資料得到 Memcached 內(nèi)存分配時優(yōu)于 Redis。

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

如何保證,緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性?

新增數(shù)據(jù):先新增到數(shù)據(jù)庫,再新增到緩存。

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

刪除數(shù)據(jù):先刪除緩存數(shù)據(jù),再刪除數(shù)據(jù)庫中數(shù)據(jù)。

查詢數(shù)據(jù):先查詢緩存數(shù)據(jù),沒有,再查詢數(shù)據(jù)庫,再新增到緩存。

強(qiáng)一致性是很難保證的,比如事務(wù)一致性,時間點(diǎn)一致性,最終一致性等。

具體問題具體分析吧。

緩存穿透怎么辦?

用戶請求緩存中不存在的數(shù)據(jù),導(dǎo)致請求直接落在數(shù)據(jù)庫上。

一、設(shè)置有規(guī)則的Key值,先驗(yàn)證Key是否符合規(guī)范。

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

三、布隆過濾器。

四、為不存在的key值,設(shè)置空緩存和過期時間,如果存儲層創(chuàng)建了數(shù)據(jù),及時更新緩存。

雪崩怎么辦?

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

系統(tǒng)講解PHP緩存技術(shù)

二、雙緩存策略,原始緩存和拷貝緩存,當(dāng)原始緩存失效請求拷貝緩存,原始緩存失效時間設(shè)置為短期,拷貝緩存設(shè)置為長期。

推薦學(xué)習(xí):《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
午夜精品久久久久久久99热影院| 国产熟人av一二三区| 孩娇小videos精品| 超碰影院在线观看| 国产人妻777人伦精品hd| 国产精品一区在线免费观看| 久久国产精品国产精品| 日日噜噜夜夜狠狠| 不卡中文字幕在线观看| 亚洲午夜精品一区| 色撸撸在线观看| 小泽玛利亚av在线| 麻豆tv在线播放| 国产一区亚洲二区三区| 天堂在线资源视频| 污污视频在线免费| 免费看日b视频| 欧美爱爱视频免费看| 国产成人无码一二三区视频| 成人小视频在线看| 毛片毛片毛片毛| 国产成人一二三区| 国产精品宾馆在线精品酒店| 激情综合网俺也去| 99精品视频免费版的特色功能| 日韩亚洲欧美视频| 亚洲熟妇av日韩熟妇在线| 50路60路老熟妇啪啪| 欧美大片久久久| 国产自产在线视频| 亚洲高清在线免费观看| 特级毛片在线免费观看| 日本少妇高潮喷水视频| 亚洲成人天堂网| 欧美视频免费看欧美视频| 一级片视频免费观看| 中国丰满熟妇xxxx性| 色免费在线视频| 国产午夜伦鲁鲁| 一级日本黄色片| 欧美一级黄色影院| av之家在线观看| 一级黄色片播放| 天天干天天操天天做| 亚洲国产精品久久久久婷蜜芽| 强开小嫩苞一区二区三区网站| 男人插女人视频在线观看| 一区二区三区 欧美| 日韩国产一级片| 黄色网zhan| 手机av在线网站| 污视频免费在线观看网站| 久久国产精品视频在线观看| 亚洲欧美日韩不卡| 天天干天天色天天干| 无码内射中文字幕岛国片| 91看片淫黄大片91| 国产又大又长又粗又黄| 国产免费又粗又猛又爽| 国产视频一区二区三区在线播放 | 免费特级黄色片| 91制片厂免费观看| 免费看av软件| 992kp免费看片| 日韩精品aaa| 天天久久综合网| 欧美精品一区二区性色a+v| 手机在线国产视频| 国产农村妇女精品久久| 三级性生活视频| 尤物网站在线看| 操人视频免费看| 中文字幕乱码免费| www国产无套内射com| 欧美乱做爰xxxⅹ久久久| 国产精品av免费观看| 亚洲色成人www永久在线观看| 欧美a在线视频| 久久婷婷国产精品| 在线看的黄色网址| 三级一区二区三区| 日本中文字幕一级片| 无码中文字幕色专区| 国产精品涩涩涩视频网站| 在线观看免费污视频| 久久久国产精华液999999 | 91av俱乐部| 亚洲欧美aaa| 妞干网这里只有精品| 丁香六月激情婷婷| 黄色免费网址大全| 日韩精品aaa| 1024av视频| 亚洲在线观看网站| 国产h视频在线播放| 91激情视频在线| 蜜臀av.com| 天美星空大象mv在线观看视频| 欧美日韩dvd| 亚洲精品高清无码视频| 中文字幕第22页| 人妻精品无码一区二区三区 | 国产99久久九九精品无码| 蜜桃免费在线视频| 亚洲熟妇无码av在线播放| 中文字幕第21页| aa视频在线播放| 亚洲精品成人在线播放| 国产69精品久久久久久久| 午夜免费看视频| 欧美激情国产精品日韩| 日产精品久久久久久久蜜臀| 91热这里只有精品| 国产网站免费在线观看| 欧美少妇在线观看| www.com久久久| 麻豆一区二区三区视频| 免费欧美一级视频| 日韩网站在线免费观看| 日韩精品福利片午夜免费观看| 五月天男人天堂| 性生交免费视频| 激情婷婷综合网| 男人操女人免费| av动漫在线看| 青青青免费在线| 国产自产在线视频| 久久久成人精品一区二区三区| 好吊色这里只有精品| 精品日韩久久久| 91视频最新入口| 99热成人精品热久久66| 日韩a在线播放| 99热成人精品热久久66| 欧美xxxxx在线视频| 久久精品一区二| 人妻精品无码一区二区三区| 狠狠97人人婷婷五月| 播放灌醉水嫩大学生国内精品| 已婚少妇美妙人妻系列| 无码少妇一区二区三区芒果| 亚洲天堂av线| 欧美国产日韩在线视频| 国产精品88久久久久久妇女 | 嫩草影院国产精品| 91最新在线观看| 日本高清一区二区视频| 丰满女人性猛交| 少妇人妻无码专区视频| 日本一极黄色片| www.污网站| 国产一区二区三区乱码| 国产日韩一区二区在线观看| 在线观看岛国av| 久久香蕉视频网站| 久久无码高潮喷水| 中文字幕在线观看日| 欧美极品少妇无套实战| 国产激情在线观看视频| 欧美大尺度做爰床戏| 97超碰在线视| 任你操这里只有精品| 亚洲图片 自拍偷拍| 91成人在线观看喷潮教学| 午夜宅男在线视频| 免费在线黄网站| 在线观看国产一级片| 免费网站永久免费观看| jizz18女人| 91精品91久久久中77777老牛| 成人小视频在线观看免费| 日韩亚洲欧美视频| 五月天视频在线观看| 免费在线a视频| www.69av| 992kp免费看片| jizz欧美激情18| www.浪潮av.com| 99久热在线精品视频| 中文字幕亚洲欧洲| 四虎永久在线精品无码视频| 黄色a级片免费看| 欧美一级免费在线观看| 久久久精品麻豆| 国产午夜福利视频在线观看| 亚洲精品国产suv一区88| 五月天开心婷婷| 欧美成人黄色网址| 狠狠热免费视频| 成人中文字幕av| 欧美日韩在线成人| 久久久久久香蕉| 国产精品久久久久9999小说| 女人天堂av手机在线| 国产一二三区在线播放| 2021国产视频| 国产日韩视频在线播放| 中文字幕制服丝袜在线| 亚洲制服在线观看| 97精品国产97久久久久久粉红|