本文目錄一覽:
- 1、php的cache
- 2、thinkphp 靜態緩存的設置方法,怎麼設置thinkphp靜態頁
- 3、怎樣設置網站的瀏覽器Cache-Control
- 4、北大青鳥設計培訓:PHP應用中常用的9大緩存技術?
- 5、thinkphp 在使用cache 調用哪個
- 6、如何用PHP程序控制瀏覽器cache
php的cache
大體可以這樣和你說吧。。好理解。。。
1. 內存級緩存。 – xcache memcached等
2. 文件級緩存。(數據緩存和模板緩存) – 就是把一些本來要查詢數據庫的東西 直接把數據取出來寫到文件 用的時候讀出來。。。。
3. 模板引擎。。。跟服務器支持不支持沒關係。。。。
4. web應用的性能瓶頸通常情況下, 是出現在數據庫上的。 包括一些大數據量下的檢索等 。
5. 數據庫連接池。。額。。。 你說的是長連接吧? PHP本身是。。。那啥的。。。執行完之後就全部銷毀了。。。。
thinkphp 靜態緩存的設置方法,怎麼設置thinkphp靜態頁
在配置文件Conf\config.php的array()中加上:
Php代碼
1
‘HTML_CACHE_ON’
=
true,//開啟靜態緩存
2
‘HTML_PATH’
=
‘__APP__/html’,//靜態緩存文件目錄,HTML_PATH可任意設置,此處設為當前項目下新建的html目錄
靜態規則定義:
ThinkPHP官方手冊寫道
靜態規則的定義有三種方式:
Return
Array(
‘ActionName’=array(‘靜態規則’,’靜態緩存有效期’,’附加規則’),
//第一種
‘ModuleName:ActionName’=array(‘靜態規則’,’靜態緩存有效期’,’附加規則’),//第二種
‘*’=array(‘靜態規則’,’靜態緩存有效期’,’附加規則’),//第三種
…更多操作的靜態規則
)
第一種是定義全局的操作靜態規則,例如定義所有的read操作的靜態規則為:’read’=array(‘{id}’,’60’)
其中,
{id}
表示取
$_GET[‘id’]
為靜態緩存文件名,第二個參數表示緩存
60
秒。
第二種是定義某個模塊的操作的靜態規則,例如,我們需要定義
Blog
模塊的
read
操作進行靜態緩存
‘Blog:read’=array(‘{id}’,-1)。
第三種方式是定義全局的靜態緩存規則,這個屬於特殊情況下的使用,任何模塊的操作都適用,例如
‘*’=array(‘{$_SERVER.REQUEST_URI|md5}’),
根據當前的
URL
進行緩存。
怎樣設置網站的瀏覽器Cache-Control
cache-control是用於控制網頁的緩存.常見的取值有private、no-cache、max-age、must- revalidate等,默認為private。
cache-control有哪些屬性?
其作用根據不同的重新瀏覽方式分為以下幾種情況:
cache-control
打開新窗口(_blank)
private、no-cache、must-revalidate 再次訪問服務器
Cache-control: max-age=5(表示當訪問此網頁後的5秒內再次訪問不 會去服務器)
在地址欄回車
值為private或must-revalidate則只有第一次訪問時會訪問服務器,以後就不再訪問。
值為no-cache,那麼每次都會訪問。
值為max-age,則在過期之前不會重複訪問。
按後退按扭
值為private、must-revalidate、max-age,則不會重訪問,
值為no-cache,則每次都重複訪問
按刷新按扭
無論為何值,都會重複訪問
cache-control在哪裡設置
在IIS的網站屬性中的http頭信息選項卡中,勾選啟用內容過期後有三個相關選項.
一、立即過期
啟用此選項後,每次請求都會向服務器申請下載最新版本。瀏覽器不做緩存處理。狀態返回碼200。Cache信息是:no-cache。這種方式可以保證客戶端看到的永遠是最新版本,也就是說如果服務器端進行了更新,一定能被客戶端看到。
二、此時段後過期與過期時間
這兩種情況下,瀏覽器緩存將其作用。注意,第一次的狀態是200,同時cache-control為30天(對應的秒數)。就是說這個網頁會有30天的緩存。所以,而後的狀態都會是304.
cache-control應該怎麼設置更好?
對於圖片,css,等長期不變化的內容應該設置較長的過期時間(如180天)
建議:
1.對於js和css可以獨立到一個二級域名中,啟用GZIP,且設置較長的過期時間
2.對於圖片獨立到另一個二級域名中,且設置較長的過期時間
對於靜態文件(html)如果長期不更新也可以設置稍長的過期時間(如30天),需要根據當前網站的實際而定。
對於動態文件(php)可以設置較短的過期時間(如120秒)
注意:在過期時間內,如果您對文件內容進行了變化,對於用戶或蜘蛛都不能瀏覽或抓取到你更改後的內容。 這也是動態文件設置較短過期時間的主要原因。cache-control的設置只是為了節約搜索引擎蜘蛛資源,讓其抓取更多有效內容,千萬不能弄巧成拙。
北大青鳥設計培訓:PHP應用中常用的9大緩存技術?
一、全頁面靜態化緩存也就是將頁面全部生成html靜態頁面,用戶訪問時直接訪問的靜態頁面,而不會去走php服務器解析的流程。
此種方式,在CMS系統中比較常見,比如dedecms;一種比較常用的實現方式是用輸出緩存:Ob_start()******要運行的代碼*******$content=Ob_get_contents();****將緩存內容寫入html文件*****Ob_end_clean();二、數據緩存顧名思義,就是緩存數據的一種方式;比如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次有人想查看這個商品時,首先就直接調這個文件裡面的信息,而不用再去數據庫查詢;其實緩存文件中緩存的就是一個php數組之類;Ecmall商城系統裡面就用了這種方式;三、查詢緩存其實這跟數據緩存是一個思路,就是根據查詢語句來緩存;將查詢得到的數據緩存在一個文件中,下次遇到相同的查詢時,就直接先從這個文件裡面調數據,不會再去查數據庫;但此處的緩存文件名可能就需要以查詢語句為基點來建立唯一標示;按時間變更進行緩存就是對於緩存文件您需要設一個有效時間,在這個有效時間內,相同的訪問才會先取緩存文件的內容,但是超過設定的緩存時間,就需要重新從數據庫中獲取數據,並生產最新的緩存文件;比如,我將我們商城的首頁就是設置2個小時更新一次。
四、頁面部分緩存該種方式,是將一個頁面中不經常變的部分進行靜態緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段緩存策略,使其用來做動態頁面中相對靜態的片段部分的緩存。
該種方式可以用於如商城中的商品頁;五、Opcode緩存首先php代碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,返回結果;所以,對於相同的php文件,第一次運行時可以緩存其Opcode碼,下次再執行這個頁面時,直接會去找到緩存下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。
比較知名的是XCache、TurckMMCache、PHPAccelerator等。
六、按內容變更進行緩存這個也並非獨立的緩存技術,需結合著用;就是當數據庫內容被修改時,即刻更新緩存文件;比如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面緩存;當商家在後台修改這個商品的信息時,點擊保存,我們同時就更新緩存文件;那麼,買家訪問這個商品信息時,實際問的是一個靜態頁面,而不需要再去訪問數據庫;試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去數據庫查一次,如果有10萬人在線瀏覽商品,那服務器壓力就大了;七、內存式緩存提到這個,可能大家想到的首先就是Memcached;memcached是高性能的分布式內存緩存服務器。
一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
它就是將需要緩存的信息,緩存到系統內存中,需要獲取信息時,直接到內存中取;比較常用的方式就是key_value方式;connect($memcachehost,$memcacheport)ordie(“Couldnotconnect”);$memcache-set(‘key’,’緩存的內容’);$get=$memcache-get($key);//獲取信息?八、apache緩存模塊apache安裝完以後,是不允許被cache的。
廣州IT培訓認為如果外接了cache或squid服務器要求進行web加速的話,就需要在htttpd.conf里進行設置,當然前提是在安裝apache的時候要激活mod_cache的模塊。
thinkphp 在使用cache 調用哪個
快捷緩存
為了進一步簡化緩存存取操作,ThinkPHP把所有的緩存機制統一成一個S方法來進行操作,所以在使用不同的緩存方式的時候並不需要關注具體的緩存細節。(如果是3.1版本以上,建議用新增的cache方法替代S方法)例如:
// 使用data標識緩存$Data數據
S(‘data’,$Data);
// 緩存$Data數據3600秒
S(‘data’,$Data,3600);
// 獲取緩存數據
$Data = S(‘data’);
// 刪除緩存數據
S(‘data’,NULL);
系統默認的緩存方式是採用File方式緩存,我們可以在項目配置文件裡面定義其他的緩存方式,例如,修改默認的緩存方式為Xcache(當然,你的環境需要支持Xcache)
‘DATA_CACHE_TYPE’=’Xcache’
通過上面的定義,相同的代碼就會使用Xcache方式來緩存了,而事實上,代碼並沒有任何改變。
當然,我們還可以在S方法裡面顯式的指定緩存方式,例如
S(‘data’,$Data,3600,’File’);
S方法還支持對當前的緩存方式傳入緩存參數,例如:
S(‘data’,$Data,3600,’File’,array(‘length’=10,’temp’=RUNTIME_PATH.’temp/’));
對於File方式緩存下的緩存目錄下面因為緩存數據過多而導致存在大量的文件問題,ThinkPHP也給出了解決方案,可以啟用哈希子目錄緩存的方式,只需要設置
‘DATA_CACHE_SUBDIR’=true
還可以設置哈希目錄的層次,例如:
‘DATA_PATH_LEVEL’=2
就可以根據緩存標識的哈希自動創建多層子目錄來緩存。4
為了更加方便的操作緩存,3.1版本新增了cache函數用以設置和操作緩存。
使用方法:
1 緩存初始化
cache(array(‘type’=’xcache’,’expire’=60));
2 緩存設置
cache(‘a’,$value);
3 緩存讀取
$value = cache(‘a’);
4 緩存刪除
cache(‘a’,null);
需要使用不同的緩存方式的時候 需要重新初始化,如果不初始化直接調用的話,則會按照系統配置自動初始化。
初始化的返回值,可以直接操作緩存:
$cache = cache(array(‘type’=’xcache’,’expire’=60));
$cache-set(‘name’,$value);
$cache-get(‘name’);
$cache-rm(‘name’);
或者
$cache = cache(array(‘type’=’xcache’,’expire’=60));
$cache-name = $value;
echo $cache-name;
unset($cache-name);
如何用PHP程序控制瀏覽器cache
函數格式:void ob_start(void)
說明:當緩衝區激活時,所有來自PHP程序的非文件頭信息均不會發送,而是保存在內部緩衝區。
為了輸出緩衝區的內容,可以使用ob_end_flush()或flush()輸出緩衝區的內容。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188000.html