搜尋
首頁後端開發PHP問題php中常用的快取方法有哪些

php中常用的快取方法有哪些

Mar 29, 2021 am 10:00 AM
php快取

php常用的快取方法有:1、全頁面靜態化快取;2、頁面部分快取;3、資料快取;4、查詢快取;5、依內容變更進行快取;6、記憶體式快取;7、apache快取模組;8、php APC快取擴充;9、Opcode快取。

php中常用的快取方法有哪些

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

PHP中常用的9大快取技術總結

1、全頁面靜態化快取

也就是將頁面全部產生html靜態頁面,使用者造訪時直接造訪的靜態頁面,而不會去走php伺服器解析的流程。此種方式,在CMS系統中比較常見,例如dedecms;

一種比較常用的實作方式是用輸出快取:

Ob_start()
******要运行的代码*******
$content = Ob_get_contents();
****将缓存内容写入html文件
*****Ob_end_clean();

2、頁面部分快取

該種方式,是將一個頁面中不常變的部分進行靜態緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段快取策略,使其用來做動態頁面中相對靜態的片段部分的快取(ESI技術,請baidu,此處不詳講)。

該種方式可以用於如商城中的商品頁;

3、資料快取

顧名思義,就是快取資料的一種方式;例如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下次有人想查看這個商品時,首先就直接調這個文件裡面的信息,而不用再去數據庫查詢;其實緩存文件中緩存的就是一個php數組之類;

Ecmall商城系統裡面就用了這種方式;

4、查詢快取

其實這跟資料快取是一個思路,就是根據查詢語句來緩存;將查詢得到的數據緩存在一個文件中,下次遇到相同的查詢時,就直接先從這個文件裡面調數據,不會再去查數據庫;但此處的緩存文件名可能就需要以查詢語句為基點來建立唯一標示;

按時間變更進行快取

其實,這條不是真正的快取方式;上面的2、3、4的快取技術一般都用到了時間變更判斷;就是對於快取檔案您需要設一個有效時間,在這個有效時間內,相同的存取才會先取快取檔案的內容,但是超過設定的快取時間,就需要重新從資料庫中取得數據,並生產最新的快取檔案;例如,我將我們商城的首頁就是設定2個小時更新一次;

#5、按內容變更進行快取

這個也並非獨立的快取技術,需結合著用;就是當資料庫內容被修改時,即刻更新快取檔案;

例如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面緩存;

當商家在後台修改這個商品的信息時,點擊保存,我們同時就更新緩存文件;那麼,買家訪問這個商品信息時,實際上訪問的是一個靜態頁面,而不需要再去訪問資料庫;

試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去數據庫查一次,如果有10萬人在線上瀏覽商品,那伺服器壓力就大了;

6、記憶體快取

提到這個,可能大家想到的首先就是Memcached;memcached是高效能的分散式記憶體快取伺服器。一般的使用目的是,透過快取資料庫查詢結果,減少資料庫存取次數,以提高動態Web應用的速度、 提高可擴充性。

它是將需要快取的信息,快取到系統記憶體中,需要取得資訊時,直接到記憶體中取;比較常用的方式就是key–>value方式;

<?php 
$memcachehost = &#39;192.168.6.191&#39;;
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$memcache->set(&#39;key&#39;,&#39;缓存的内容&#39;);
$get = $memcache->get($key);  //获取信息
?>

7、apache快取模組

apache安裝完以後,是不被允許被cache的。如果外接了cache或squid伺服器要求進行web加速的話,就需要在htttpd.conf裡進行設置,當然前提是在安裝apache的時候要啟動mod_cache的模組。

安裝apache時:./configure –enable-cache –enable-disk-cache –enable-mem-cache

8、php APC快取擴展

Php有一個APC快取擴展,windows下面為php_apc.dll,需要先載入這個模組,然後是在php.ini裡面進行設定:

[apc] 
extension=php_apc.dll 
apc.rfc1867 = on 
upload_max_filesize = 100M 
post_max_size = 100M 
apc.max_file_size = 200M 
upload_max_filesize = 1000M 
post_max_size = 1000M 
max_execution_time = 600 ;   每个PHP页面运行的最大时间值(秒),默认30秒 
max_input_time = 600 ;  每个PHP页面接收数据所需的最大时间,默认60 
memory_limit = 128M ;  每个PHP页面所吃掉的最大内存,默认8M

#9 、Opcode快取

首先php程式碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,傳回結果;所以,對於相同的php文件,第一次執行時可以快取

其Opcode碼,下次再執行這個頁面時,直接會去找到快取下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。

推薦學習:《PHP影片教學

以上是php中常用的快取方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具