国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

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

2019-11-10 19:21:31
字體:
供稿:網(wǎng)友
概念
緩存cache:高速數(shù)據(jù)交換存儲器。RAM。加大吞吐量:減少計(jì)算量,縮短請求流程(減少網(wǎng)絡(luò)I/O,硬盤I/O)php應(yīng)用緩存: 1、底層CPU緩存、磁盤文件系統(tǒng)緩存。 2、應(yīng)用層Zend虛擬機(jī)的變量緩存,有memcached key-value內(nèi)存緩存, APC,eaccelerator這類基于opcode字節(jié)碼的緩存。 3、數(shù)據(jù)庫層有table cache,thread cache,query cache. 4、servlet容器層有apache的緩存。 5、servlet再上去,在web cache層(squid,varnish)memcache偏向于緩存,追求速度和性能。mongodb偏向于數(shù)據(jù)庫,數(shù)據(jù)類型豐富。
三要素
命中率:請求緩存次數(shù)和緩存返回正確結(jié)果次數(shù)的比例。MySQL:query cache. show global status查看global status.緩存更新策略: FIFO:先進(jìn)先出; LFU:less frequently used最少使用元素會被清理掉。 LRU:least recently used最近最少使用的元素會被清理掉。緩存最大數(shù)據(jù)量: 緩存中處理元素最大個(gè)數(shù)或者能使用的最大存儲空間。mysql query_cache_szie

文件緩存

存儲磁盤、容量大,磁盤比內(nèi)存更穩(wěn)定。SSD固態(tài)硬盤讀寫速度提升。擴(kuò)展容易:磁盤陣列、分布式處理等。web應(yīng)用中的模板引擎和配置文件的處理中
應(yīng)用
模板作用之一:把php代碼編譯成靜態(tài)HTML文件,下次讀取不用再編譯,直接讀取靜態(tài)文件。<?php/*返回編譯文件的文件名*/public function path() { return $this->cache_file = $this->arrayConfig['cachedir'].$this->file.$this->arrayConfig['suffix_cache'];}/** * 開始編譯 */public function compile() { $this->message = ob_get_contents(); @file_put_contents($this->path(), $this->message);}/** * 顯示模板 */public function show($file) { $this->file = $file; $PIG_TPL_FILE = $this->arrayConfig['templateDir'].$file.$this->arrayConfig['suffix']; //先判斷緩存文件是否存在 if(is_file($this->path())){ $old = $_SERVER['REQUEST_TIME'] - filemtime($this->path()) >= $this->arrayConfig['cache_time']? 1 : 0; }else{ $old = 0; } //如果需要靜態(tài)編譯 if(true == $this->arrayConfig['cache_htm']){ if(is_file($this->path()) && !$old){ readfile($this->path());//靜態(tài)編譯文件存在并且沒有過期 }else{ if(is_file($PIG_TPL_FILE)){ ob_start(); extract($this->value); include($PIG_TPL_FILE);//否則重新編譯 $this->compile(); }else{ die('找不到模板文件'); } } }else{//不需要編譯 if(is_file($PIG_TPL_FILE)) { extract($this->value); include($PIG_TPL_FILE);//加載原始文件并保存 }else{ die('找不到模板文件:'.$PIG_TPL_FILE); } }}
相關(guān)緩存產(chǎn)品
文件緩存開源產(chǎn)品secache:shopex團(tuán)隊(duì)開發(fā)。純PHP實(shí)現(xiàn),無須擴(kuò)展;使用LRU算法自動清理;最大支持1G緩存;使用hash定位,讀取迅速;模仿的是memcached存儲機(jī)制,KEY-VALUE二進(jìn)制數(shù)據(jù)庫,使用hash索引方式進(jìn)行快速查找到相關(guān)的文件中的位置,并且采用拉鏈法解決沖突。使用slab數(shù)據(jù)塊來存儲數(shù)據(jù)。(文件存儲體積較大的數(shù)據(jù)。數(shù)據(jù)庫存儲數(shù)據(jù)同步和鎖問題)opcode緩存:虛擬機(jī)把PHP代碼編譯成一種中間碼的結(jié)果緩存起來(硬盤/內(nèi)存),下次運(yùn)行就不用再編譯直接解釋即可。eaccelerator:常駐內(nèi)存。就是其中的一種opcode緩存,在服務(wù)器第一次請求PHP文件時(shí)候,會對PHP文件的opcode進(jìn)行緩存;再次請求直接讀取opcode;由zend虛擬機(jī)直接執(zhí)行,從而節(jié)省了語法解析的消耗。eaccelerator緩存opcode,同時(shí)提供一組API來操作緩存數(shù)據(jù),java中的共享變量。能使得變量在不同的進(jìn)程中得到共享。eaccelerator_put/eaccelerator_get

客戶端緩存

web緩存:由瀏覽器實(shí)現(xiàn),同一個(gè)回話過程中,檢查一次病確定緩存的副本足夠新。
遵循規(guī)則
1、如果響應(yīng)頭告訴瀏覽器不需要保留緩存,緩存器就不會緩存響應(yīng)內(nèi)容。2、如果請求信息需要認(rèn)證或者安全加密,相關(guān)內(nèi)容也不會進(jìn)行緩存。3、如果在回應(yīng)中不存在校驗(yàn)器。4、含有完整的過期時(shí)間和壽命控制頭信息
頭部信息
expires:過期時(shí)間,告訴緩存器相關(guān)副本的過期時(shí)間。cache-control:緩存控制etag:服務(wù)器生成的唯一標(biāo)識符etag,每次副本的標(biāo)簽都會變化。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 五常市| 留坝县| 尚志市| 望奎县| 龙陵县| 石河子市| 泗洪县| 湘潭县| 保康县| 乌鲁木齐县| 景洪市| 界首市| 柘城县| 嘉义市| 乃东县| 汉阴县| 秦安县| 灌阳县| 会昌县| 灵台县| 炎陵县| 莱芜市| 渑池县| 赤壁市| 靖边县| 鄯善县| 洛阳市| 依安县| 西乌珠穆沁旗| 读书| 巴青县| 灌云县| 蓬安县| 遂川县| 萨迦县| 平阴县| 怀宁县| 微山县| 栾城县| 奇台县| 无为县|