想把快取搞定,求路人多噴
1.全頁靜態(tài)化快取
也就是將頁面全部產生html靜態(tài)頁面,使用者造訪時直接造訪的靜態(tài)頁面,而不會去走php伺服器解析的流程。此種方式,在CMS系統(tǒng)中較常見,例如dedecms;
一種比較常用的實作方式是用輸出快?。?br>
Ob_start()
******要運行的程式碼*******
$content = Ob_get_contents();
****將快取內容寫入html檔*****
Ob_end_clean();
2、頁面部分快取
該種方式,是將一個頁面中不常變的部分進行靜態(tài)緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段快取策略,使其用來做動態(tài)頁面中相對靜態(tài)的片段部分的快取(ESI技術,請baidu,此處不詳講)。
該種方式可以用於如商城中的商品頁;
3.資料快取
顧名思義,就是快取數據的一種方式;比如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php檔案中,檔案名稱包含商品id來建一個唯一標示;下次有人想查看這個商品時,首先就直接調這個檔案裡面的信息,而不用再去資料庫查詢;其實快取檔案中快取的就是一個php數組之類;
Ecmall商城系統(tǒng)裡面就用了這種方式;
4.查詢快取
其實這跟資料快取是一個思路,就是根據查詢語句來快??;將查詢得到的資料快取在一個檔案中,下次遇到相同的查詢時,就直接先從這個檔案裡面調數據,不會再去查資料庫;但此處的快取檔案名稱可能需要以查詢語句為基點來建立唯一標示;
按時間變更進行快取
其實,這一條不是真正的快取方式;上面的2、3、4的快取技術一般都用到了時間變更判斷;就是對於快取檔案您需要設一個有效時間,在這個有效時間內,相同的存取才會先取快取檔案的內容,但是超過設定的快取時間,就需要重新從資料庫中取得數據,並生產最新的快取檔案;比如,我將我們商城的首頁就是設定2個小時更新一次;
5.依內容變更進行快取
這個也並非獨立的快取技術,需結合著用;就是當資料庫內容被修改時,即刻更新快取檔案;
例如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面快取;
當商家在後臺修改這個商品的資訊時,點擊儲存,我們同時就更新快取檔案;那麼,買家存取這個商品資訊時,實際上存取的是一個靜態(tài)頁面,而不需要再去存取資料庫;
試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去數據庫查一次,如果有10萬人在線瀏覽商品,那服務器壓力就大了;
6.內存式快取
提到這個,可能大家想到的首先就是Memcached;memcached是高效能的分散式記憶體快取伺服器。 一般的使用目的是,透過快取資料庫查詢結果,減少資料庫存取次數,以提高動態(tài)Web應用的速度、 提高可擴充性。
它就是將需要快取的信息,快取到系統(tǒng)記憶體中,需要獲取資訊時,直接到記憶體??;比較常用的方式就是 key–>value方式;
$memcachehost = '192.168.6.191';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$memcache->set('key','快取的內容');
$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的執(zhí)行流程可以用下圖來展示:
圖片描述
首先php程式碼被解析為Tokens,然後再編譯為Opcode碼,最後執(zhí)行Opcode碼,返回結果;所以,對於相同的php文件,第一次運行時可以緩存其Opcode碼,下次再執(zhí)行這個頁面時,直接會去找到快取下的opcode碼,直接執(zhí)行最後一步,而不再需要中間的步驟了。

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

《Go語言程式設計實例:Web開發(fā)中的程式碼範例》隨著網路的快速發(fā)展,Web開發(fā)已成為各行業(yè)中不可或缺的一部分。作為一門功能強大且效能優(yōu)越的程式語言,Go語言在Web開發(fā)中越來越受到開發(fā)者們的青睞。本文將透過具體的程式碼範例,介紹如何利用Go語言進行Web開發(fā),讓讀者更能理解並運用Go語言來建立自己的Web應用。 1.簡單的HTTP伺服器首先,讓我們從一個

華為雲端邊緣運算對接指南:Java程式碼範例快速實現介面隨著物聯網技術的快速發(fā)展和邊緣運算的興起,越來越多的企業(yè)開始關注邊緣運算的應用。華為雲端提供了邊緣運算服務,為企業(yè)提供了高可靠的運算資源和便利的開發(fā)環(huán)境,使得邊緣運算應用更容易實現。本文將介紹如何透過Java程式碼快速實現華為雲端邊緣運算的介面。首先,我們需要準備好開發(fā)環(huán)境。確保你已經安裝了Java開發(fā)工具包(

Java冒泡排序最簡單的程式碼範例冒泡排序是一種常見的排序演算法,它的基本想法是透過相鄰元素的比較和交換來將待排序序列逐步調整為有序序列。以下是一個簡單的Java程式碼範例,示範如何實作冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

了解Python程式設計的入門程式碼範例Python是一種簡單易學,功能強大的程式語言。對於初學者來說,了解Python程式設計的入門級程式碼範例是非常重要的。本文將為您提供一些具體的程式碼範例,幫助您快速入門。列印HelloWorldprint("HelloWorld")這是Python中最簡單的程式碼範例。 print()函數用於將指定的內容輸出

如何使用PHP編寫庫存管理系統(tǒng)中的庫存分倉管理功能碼庫存管理是許多企業(yè)中不可或缺的一部分。對於擁有多個倉庫的企業(yè)來說,庫存分倉管理功能尤其重要。透過合理管理和追蹤庫存,企業(yè)可以實現不同倉庫之間的庫存調撥,優(yōu)化營運成本,改善協同效率。本文將介紹如何使用PHP編寫庫存分倉管理功能的程式碼,並為您提供相關的程式碼範例。一、建立資料庫在開始編寫庫存分倉管理功能的程式碼之

PHP變數儲存程式運行期間的值,對於建立動態(tài)且互動的WEB應用程式至關重要。本文將深入探討php變量,並透過10個真實的範例展示它們的實際應用。 1.儲存使用者輸入$username=$_POST["username"];$passWord=$_POST["password"];此範例從表單提交中提取使用者名稱和密碼,並將其儲存在變數中以供進一步處理。 2.設定配置值$database_host="localhost";$database_username="username";$database_pa

Java選擇排序法程式碼編寫指南及範例選擇排序是一種簡單直觀的排序演算法,其想法是每次從未排序的元素中選擇最?。ɑ蜃畲螅┑脑剡M行交換,直到所有元素排序完成。本文將提供選擇排序的程式碼編寫指南,並附上具體的Java範例程式碼。演算法原理選擇排序的基本原理是將待排序數組分為已排序和未排序兩部分,每次從未排序部分選擇最?。ɑ蜃畲螅┑脑?,將其放到已排序部分的末尾。重複上述

標題:從入門到精通:Go語言中常用資料結構的程式碼實作資料結構在程式設計中起著至關重要的作用,它是程式設計的基礎。在Go語言中,有許多常用的資料結構,掌握這些資料結構的實作方式對於成為優(yōu)秀的程式設計師至關重要。本文將介紹Go語言中常用的資料結構,並給出對應的程式碼範例,幫助讀者從入門到精通這些資料結構。 1.數組(Array)數組是一種基本的資料結構,是一組相同類型
