亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

簡(jiǎn)介PHP的Yii框架中緩存的一些高級(jí)用法

2024-08-30 19:06:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

頁(yè)面緩存:

頁(yè)面緩存指的是在服務(wù)器端緩存整個(gè)頁(yè)面的內(nèi)容。隨后當(dāng)同一個(gè)頁(yè)面被請(qǐng)求時(shí),內(nèi)容將從緩存中取出,而不是重新生成。

頁(yè)面緩存由 yii/filters/PageCache 類提供支持,該類是一個(gè)過(guò)濾器。它可以像這樣在控制器類中使用:

  1. public function behaviors() 
  2.  
  3.  
  4.  return [ 
  5.  
  6.   [ 
  7.  
  8.    'class' => 'yii/filters/PageCache'
  9.  
  10.    'only' => ['index'], 
  11.  
  12.    'duration' => 60, 
  13.  
  14.    'variations' => [ 
  15.  
  16.     /Yii::$app->language, 
  17.  
  18.    ], 
  19.  
  20.    'dependency' => [ 
  21.  
  22.     'class' => 'yii/caching/DbDependency'
  23.  
  24.     'sql' => 'SELECT COUNT(*) FROM post'
  25. //Vevb.com 
  26.    ], 
  27.  
  28.   ], 
  29.  
  30.  ]; 
  31.  

上述代碼表示頁(yè)面緩存只在 index 操作時(shí)啟用,頁(yè)面內(nèi)容最多被緩存 60 秒,會(huì)隨著當(dāng)前應(yīng)用的語(yǔ)言更改而變化。如果文章總數(shù)發(fā)生變化則緩存的頁(yè)面會(huì)失效。

如你所見(jiàn),頁(yè)面緩存和片段緩存極其相似。它們都支持 duration,dependencies,variations 和 enabled 配置選項(xiàng)。它們的主要區(qū)別是頁(yè)面緩存是由過(guò)濾器實(shí)現(xiàn),而片段緩存則是一個(gè)小部件。

你可以在使用頁(yè)面緩存的同時(shí),使用片段緩存和動(dòng)態(tài)內(nèi)容。

HTTP 緩存

除了服務(wù)器端緩存外, Web 應(yīng)用還可以利用客戶端緩存去節(jié)省相同頁(yè)面內(nèi)容的生成和傳輸時(shí)間。

通過(guò)配置 yii/filters/HttpCache 過(guò)濾器,控制器操作渲染的內(nèi)容就能緩存在客戶端。yii/filters/HttpCache 過(guò)濾器僅對(duì) GET 和 HEAD 請(qǐng)求生效,它能為這些請(qǐng)求設(shè)置三種與緩存有關(guān)的 HTTP 頭。

yii/filters/HttpCache::lastModified

yii/filters/HttpCache::etagSeed

yii/filters/HttpCache::cacheControlHeader

Last-Modified 頭

Last-Modified 頭使用時(shí)間戳標(biāo)明頁(yè)面自上次客戶端緩存后是否被修改過(guò)。

通過(guò)配置 yii/filters/HttpCache::lastModified 屬性向客戶端發(fā)送 Last-Modified 頭。該屬性的值應(yīng)該為 PHP callable 類型,返回的是頁(yè)面修改時(shí)的 Unix 時(shí)間戳。該 callable 的參數(shù)和返回值應(yīng)該如下:

  1. /** 
  2.  
  3.  * @param Action $action 當(dāng)前處理的操作對(duì)象 
  4.  
  5.  * @param array $params “params” 屬性的值 
  6.  
  7.  * @return integer 頁(yè)面修改時(shí)的 Unix 時(shí)間戳 
  8.  
  9.  */ 
  10.  
  11. function ($action$params

以下是使用 Last-Modified 頭的示例:

  1. public function behaviors() 
  2.  
  3.  
  4.  return [ 
  5.  
  6.   [ 
  7.  
  8.    'class' => 'yii/filters/HttpCache'
  9.  
  10.    'only' => ['index'], 
  11.  
  12.    'lastModified' => function ($action$params) { 
  13.  
  14.     $q = new /yii/db/Query(); 
  15. //Vevb.com 
  16.     return $q->from('post')->max('updated_at'); 
  17.  
  18.    }, 
  19.  
  20.   ], 
  21.  
  22.  ]; 
  23.  

上述代碼表明 HTTP 緩存只在 index 操作時(shí)啟用。它會(huì)基于頁(yè)面最后修改時(shí)間生成一個(gè) Last-Modified HTTP 頭。當(dāng)瀏覽器第一次訪問(wèn) index 頁(yè)時(shí),服務(wù)器將會(huì)生成頁(yè)面并發(fā)送至客戶端瀏覽器。之后客戶端瀏覽器在頁(yè)面沒(méi)被修改期間訪問(wèn)該頁(yè),服務(wù)器將不會(huì)重新生成頁(yè)面,瀏覽器會(huì)使用之前客戶端緩存下來(lái)的內(nèi)容。因此服務(wù)端渲染和內(nèi)容傳輸都將省去。

ETag 頭

“Entity Tag”(實(shí)體標(biāo)簽,簡(jiǎn)稱 ETag)使用一個(gè)哈希值表示頁(yè)面內(nèi)容。如果頁(yè)面被修改過(guò),哈希值也會(huì)隨之改變。通過(guò)對(duì)比客戶端的哈希值和服務(wù)器端生成的哈希值,瀏覽器就能判斷頁(yè)面是否被修改過(guò),進(jìn)而決定是否應(yīng)該重新傳輸內(nèi)容。

通過(guò)配置 yii/filters/HttpCache::etagSeed 屬性向客戶端發(fā)送 ETag 頭。該屬性的值應(yīng)該為 PHP callable 類型,返回的是一段種子字符用來(lái)生成 ETag 哈希值。該 callable 的參數(shù)和返回值應(yīng)該如下:

  1. /** 
  2.  
  3.  * @param Action $action 當(dāng)前處理的操作對(duì)象 
  4.  
  5.  * @param array $params “params” 屬性的值 
  6.  
  7.  * @return string 一段種子字符用來(lái)生成 ETag 哈希值 
  8.  
  9.  */ 
  10.  
  11. function ($action$params

以下是使用 ETag 頭的示例:

  1. public function behaviors() 
  2.  
  3.  
  4.  return [ 
  5.  
  6.   [ 
  7.  
  8.    'class' => 'yii/filters/HttpCache'
  9.  
  10.    'only' => ['view'], 
  11.  
  12.    'etagSeed' => function ($action$params) { 
  13. //Vevb.com 
  14.     $post = $this->findModel(/Yii::$app->request->get('id')); 
  15.  
  16.     return serialize([$post->title, $post->content]); 
  17.  
  18.    }, 
  19.  
  20.   ], 
  21.  
  22.  ]; 
  23.  

上述代碼表明 HTTP 緩存只在 view 操作時(shí)啟用。它會(huì)基于用戶請(qǐng)求的標(biāo)題和內(nèi)容生成一個(gè) ETag HTTP 頭。當(dāng)瀏覽器第一次訪問(wèn) view 頁(yè)時(shí),服務(wù)器將會(huì)生成頁(yè)面并發(fā)送至客戶端瀏覽器。之后客戶端瀏覽器標(biāo)題和內(nèi)容沒(méi)被修改在期間訪問(wèn)該頁(yè),服務(wù)器將不會(huì)重新生成頁(yè)面,瀏覽器會(huì)使用之前客戶端緩存下來(lái)的內(nèi)容。因此服務(wù)端渲染和內(nèi)容傳輸都將省去。

ETag 相比 Last-Modified 能實(shí)現(xiàn)更復(fù)雜和更精確的緩存策略。例如,當(dāng)站點(diǎn)切換到另一個(gè)主題時(shí)可以使 ETag 失效。

復(fù)雜的 Etag 生成種子可能會(huì)違背使用 HttpCache 的初衷而引起不必要的性能開(kāi)銷,因?yàn)轫憫?yīng)每一次請(qǐng)求都需要重新計(jì)算 Etag。請(qǐng)?jiān)囍页鲆粋€(gè)最簡(jiǎn)單的表達(dá)式去觸發(fā) Etag 失效。

注意:為了遵循 RFC 7232(HTTP 1.1 協(xié)議),如果同時(shí)配置了 ETag 和 Last-Modified 頭,HttpCache 將會(huì)同時(shí)發(fā)送它們。并且如果客戶端同時(shí)發(fā)送 If-None-Match 頭和 If-Modified-Since 頭,則只有前者會(huì)被接受。

Cache-Control 頭

Cache-Control 頭指定了頁(yè)面的常規(guī)緩存策略??梢酝ㄟ^(guò)配置 yii/filters/HttpCache::cacheControlHeader 屬性發(fā)送相應(yīng)的頭信息。默認(rèn)發(fā)送以下頭:

  1. Cache-Control: public, max-age=3600 

會(huì)話緩存限制器

當(dāng)頁(yè)面使 session 時(shí),PHP 將會(huì)按照 PHP.INI 中所設(shè)置的 session.cache_limiter 值自動(dòng)發(fā)送一些緩存相關(guān)的 HTTP 頭。這些 HTTP 頭有可能會(huì)干擾你原本設(shè)置的 HttpCache 或讓其失效。為了避免此問(wèn)題,默認(rèn)情況下 HttpCache 禁止自動(dòng)發(fā)送這些頭。想改變這一行為,可以配置 yii/filters/HttpCache::sessionCacheLimiter 屬性。該屬性接受一個(gè)字符串值,包括 public,private,private_no_expire,和 nocache。請(qǐng)參考 PHP 手冊(cè)中的緩存限制器了解這些值的含義。

SEO 影響

搜索引擎趨向于遵循站點(diǎn)的緩存頭。因?yàn)橐恍┡老x(chóng)的抓取頻率有限制,啟用緩存頭可以可以減少重復(fù)請(qǐng)求數(shù)量,增加爬蟲(chóng)抓取效率(譯者:大意如此,但搜索引擎的排名規(guī)則不了解,好的緩存策略應(yīng)該是可以為用戶體驗(yàn)加分的)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文字幕在线视频免费观看| 亚洲性日韩精品一区二区| 亚洲精品乱码久久久久| 在线毛片网站| 在线人体午夜视频| 亚洲欧美日韩一区二区三区在线| 狠狠色丁香久久婷婷综合丁香| 国产麻豆免费视频| 国产69精品久久久久777| 欧美另类极品videosbest视| 香蕉视频网站在线播放| 中文字幕一区二区人妻电影| 亚洲图片88| 丝袜美腿美女被狂躁在线观看| 在线观看免费观看在线91| 国产精品九九久久久久久久| 奇米精品一区二区三区在线观看一| 狠狠久久亚洲欧美专区| 久久亚洲影院| 人人爽人人爽人人片av| 国产特黄级aaaaa片免| 污污影院在线观看| 午夜久久黄色| 国产欧美日韩精品丝袜高跟鞋| 亚洲综合图片区| 屁屁影院国产第一页| 在线中文字幕播放| 欧美人与性动交xxⅹxx| 精品在线观看一区二区| 免费观看黄一级视频| 福利在线免费视频| 国产精品宾馆在线精品酒店| 国产乱人伦精品一区二区在线观看| 视频一区二区三区在线| 国产免费av观看| 亚洲天堂在线视频观看| 亚洲三级在线播放| 97影院理论午夜| 国产精品一区三区在线观看| 91精品啪aⅴ在线观看国产| 欧美性色黄在线视频| 99riav视频在线观看| 欧美网站一区二区| 国产日产欧美精品| 一区二区三区国产精品| 亚洲激情丁香| 视频91a欧美| 成年人免费高清视频| 少妇久久久久久被弄到高潮| 天堂在线中文字幕| 免费看日韩毛片| 老司机99精品99| 捆绑紧缚一区二区三区视频| 动漫美女无遮挡免费| 国产成人无码一区二区在线播放| 午夜爽爽爽男女免费观看影院| 国产超碰在线| 正在播放国产精品| 欧美三级日韩三级国产三级| 国产精品视频在线看| 亚洲区一区二区三区| 99久免费精品视频在线观78| 猫咪在线永久网站| 欧美一区第一页| 五月激情婷婷网| 国产综合av| 亚洲一级网站| 国产成人一区二区三区小说| 黄页网站大全一区二区| av网址在线播放| 91精品国产免费久久综合| 精品少妇一区二区三区密爱| 欧美日韩另类丝袜其他| 欧美性xxxxx极品视频| 日韩av影音先锋| 亚洲午夜久久久久久久久| 久草在线资源视频在线观看| 国产亚洲精品7777| 91亚洲精品国偷拍自产在线观看| 丰满人妻一区二区三区大胸| 日本成人7777| 亚洲欧美激情国产综合久久久| 欧美理论电影在线观看| 亚洲涩涩av| 老司机av在线免费看| 亚洲国产激情一区二区三区| 成人性生交大片免费看中文视频| 91社区视频在线观看| 欧美大片欧美激情性色a∨久久| 91这里只有精品| а√天堂8资源在线官网| 日韩亚洲在线视频| 糖心vlog免费在线观看| 苍井空浴缸大战猛男120分钟| 桃乃木かなav在线播放| 97精品一区二区视频在线观看| 精品国产污污免费网站入口| 亚洲精品国产精品国自产网站按摩| 日本女优天堂99伊人| 日韩三区在线| 粉嫩av在线播放| 麻豆一区二区三区精品视频| 国产久一道中文一区| 国产 欧美 日本| 欧美成人精品激情在线视频| 深夜福利网站| 影音先锋欧美在线| 国产精品亚洲人在线观看| 精品久久久久久久久久久久久久久久| 国产精品swag| 2018日日夜夜| 日韩毛片高清在线播放| 亚洲欧美另类视频| 日本免费在线精品| bbw丰满大肥奶肥婆| 在线观看xxxx| 国产剧情久久久久久| 日本免费一区二区三区四区| 精品欧美一区二区在线观看| 欧美丰满少妇xxxxx高潮对白| 国产精品亚洲一区二区三区在线| av网址在线观看免费| 国产精品一二区| 亚洲午夜精品久久久久久app| 另类综合图区| 日本不卡一二区| 亚洲第一成人av| 欧美性极品videosbest| 国产黄在线观看免费观看不卡| av男人的天堂网| 91免费在线播放视频| 国产91亚洲精品久久久| 96精品视频| www.中文字幕在线| 久久久www免费人成精品| 九九精品久久久| 精品视频一区三区九区| 国产精品久久精品牛牛影视| 免费在线观看污| 又大又硬又爽免费视频| 好色先生视频污| 五月天激情国产综合婷婷婷| 亚洲第一网站男人都懂| 激情五月综合网| 日本福利片免费看| 男人的天堂va在线| 色悠久久久久综合欧美99| 国产免费大片| 国产原创精品| 精品无码久久久久久久动漫| 杨幂一区二区三区免费看视频| 在线观看av不卡| 国产伦精品一区二区三区照片| 欧美一级大片免费看| a篇片在线观看网站| www亚洲成人| 天天久久人人| 午夜久久久久久久久| 国产精品老女人精品视频| 久久美女福利视频| 68国产成人综合久久精品| 久久99久久99精品蜜柚传媒| 九色porny丨精品自拍视频| 波多野结衣 久久| 亚洲国产精品嫩草影院| 久久国产免费观看| 久久久国产视频| 91香蕉国产线在线观看| 嫩草嫩草嫩草嫩草嫩草| 国产精品一区二区三区av麻| 超碰97在线播放| 欧美一区二区三区播放| 波多野结衣 在线| 在线播放黄色网址| av在线天堂网| 亚洲国产精品久久久久秋霞不卡| 国产精品久线在线观看| 91在线porny国产在线看| 98精品在线视频| 91黄视频在线| 国产成人自拍偷拍| 韩国理伦片一区二区三区在线播放| 全球中文成人在线| 日韩影片中文字幕| 一级片免费观看视频| 欧美精品免费播放| 欧美伦理片在线观看| 日韩亚洲国产中文字幕欧美| 91精品国产aⅴ一区二区| 中文字幕五月欧美| 国产精品久久久久久久av| 国产精品系列在线播放| 久久亚洲春色中文字幕| 日韩欧美一区二区在线观看| 亚州精品永久观看视频| 日韩男女性生活视频| 最近最新中文字幕在线| 国产精品久久久久三级| 亚洲一二三级电影| 午夜性福利视频| 日日骚av一区二区| 久久亚洲av午夜福利精品一区| 欧美人与性动xxxx| 亚洲天堂资源| 99久久婷婷国产一区二区三区| 在线一区二区不卡| 精品婷婷伊人一区三区三| 亚洲a区在线视频| 亚洲高清免费观看高清完整版| 一级黄色录像在线观看| 成年女人在线看片| 午夜精品久久久久久久99热浪潮| 亚洲人成亚洲人成在线观看图片| 亚洲av成人无码久久精品| 综合视频在线| 国内精品**久久毛片app| 国产美女免费网站| 中国丰满人妻videoshd| 日本在线播放一区| 国产波霸爆乳一区二区| 国产精品高潮呻吟久久av黑人| 天堂中文字幕在线| 国产资源在线视频| 九九久久精品这里久久网| av亚洲精华国产精华精| 91欧美视频网站| 国产在线综合网| 欧美日韩在线观看视频| 国产麻豆一区二区三区在线观看| 国产高潮流白浆喷水视频| 五月婷婷综合激情网| 疯狂做受xxxx欧美肥白少妇| 亚洲少妇一区| 亚洲精品一二三**| 天天操夜夜操视频| 国产精品秘入口18禁麻豆免会员| 免费h视频在线观看| 国产aⅴ夜夜欢一区二区三区| 日韩成人在线视频网站| 亚洲一区二区中文字幕在线观看| 性色av蜜臀av色欲av| 99产精品成人啪免费网站| 影音先锋成人在线电影| 菠萝蜜一区二区| 天堂аⅴ在线最新版在线| 欧美精品久久久久久久免费| 懂色av.com| 美女视频第一区二区三区免费观看网站| 欧美久久久久久久久| 色乱码一区二区三区网站| 九九热视频精品| 亚洲精品a级片| 欧美激情自拍偷拍| 蜜臀精品一区二区三区在线观看| 午夜爽爽爽男女免费观看| 欧美亚洲免费高清在线观看| 91精品人妻一区二区三区四区| 一区二区在线免费看| 久久女同性恋中文字幕| 亚洲精品成人无码毛片| 中文字幕中文字幕在线十八区| 中文在线网在线中文| 中文字幕专区| 国产精品欧美久久久| 国产福利精品一区二区三区| 97人人澡人人爽人人模亚洲| 国产农村妇女精品一二区| 秋霞影院一区二区三区| 午夜精品福利视频网站| 中国人xxxxx69免费视频| 久久久久久久中文| 日本一区二区免费不卡| 中国精品一区二区| 中文字幕在线观看1| 国产精品成人无码| 国产福利一区二区三区视频| 国产在线日本| 在线观看h视频| 国产午夜免费福利| 成人台湾亚洲精品一区二区| 青娱乐国产精品| 麻豆影视国产在线观看| 欧美大尺度在线观看| 成人欧美一区二区三区在线| 麻豆精品一区二区av白丝在线| 国产一级一片免费播放| 亚洲精品人成电影网| 性生活在线视频| 丝袜 亚洲 另类 欧美 重口| 亚洲人视频在线| 精品人妻无码一区二区| 久久99精品波多结衣一区| 国产精品国产三级国产有无不卡| 在线观看国产一区二区三区| www.av88| 精品国内二区三区| 天天好比中文综合网| 成人国产精品| 国产在线播放精品| 青青青青久久精品国产一百度| 99久久这里只有精品| 黄色网址中文字幕| 亚洲韩国精品一区| 欧美日韩一区二区三区视频播放| 中文字幕久久av| 欧美精品xxxxbbbb| 日韩精品专区在线| eeuss影院一区二区三区| 国产情侣激情自拍| 日本理论片2828理论片| 国产精品一区二区三区乱码| 午夜伊人狠狠久久| 麻豆changesxxx国产| 欧美高清激情brazzers| 一二三四在线观看视频韩国| 中文字幕国产精品一区二区| 免费h在线看| 国产视频久久久久久久| 激情综合激情| 日韩久久精品成人| av高清在线| 亚洲欧洲另类| 成人黄色免费视频| 少妇高潮惨叫久久久久| 国产**成人网毛片九色| 亚洲精品资源美女情侣酒店| 国产白丝网站精品污在线入口| 国产精品五月天|