国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 php 緩存工具類 實(shí)現(xiàn)網(wǎng)頁緩存

php 緩存工具類 實(shí)現(xiàn)網(wǎng)頁緩存

Aug 08, 2016 am 09:22 AM
function gt private this

php 緩存工具類 實(shí)現(xiàn)網(wǎng)頁緩存?

php程序在抵抗大流量訪問的時(shí)候動(dòng)態(tài)網(wǎng)站往往都是難以招架,所以要引入緩存機(jī)制,一般情況下有兩種類型緩存

一、文件緩存

二、數(shù)據(jù)查詢結(jié)果緩存,使用內(nèi)存來實(shí)現(xiàn)高速緩存

本例主要使用文件緩存。

主要原理使用緩存函數(shù)來存儲(chǔ)網(wǎng)頁顯示結(jié)果,如果在規(guī)定時(shí)間里再次調(diào)用則可以加載緩存文件。

工具類代碼:

// 文件緩存類
class Cache {
	/**
	 * $dir : 緩存文件存放目錄
	 * $lifetime : 緩存文件有效期,單位為秒
	 * $cacheid : 緩存文件路徑,包含文件名
	 * $ext : 緩存文件擴(kuò)展名(可以不用),這里使用是為了查看文件方便
	 */
	private $dir;
	private $lifetime;
	private $cacheid;
	private $ext;
	/**
	 * 析構(gòu)函數(shù),檢查緩存目錄是否有效,默認(rèn)賦值
	 */
	function __construct($dir = '', $lifetime = 1800) {
		if ($this->dir_isvalid ( $dir )) {
			$this->dir = $dir;
			$this->lifetime = $lifetime;
			$this->ext = '.Php';
			$this->cacheid = $this->getcacheid ();
		}
	}
	/**
	 * 檢查緩存是否有效
	 */
	private function isvalid() {
		if (! file_exists ( $this->cacheid ))
			return false;
		if (! (@$mtime = filemtime ( $this->cacheid )))
			return false;
		if (mktime () - $mtime > $this->lifetime)
			return false;
		return true;
	}
	/**
	 * 寫入緩存
	 * $mode == 0 , 以瀏覽器緩存的方式取得頁面內(nèi)容
	 * $mode == 1 , 以直接賦值(通過$content參數(shù)接收)的方式取得頁面內(nèi)容
	 * $mode == 2 , 以本地讀取(fopen ile_get_contents)的方式取得頁面內(nèi)容(似乎這種方式?jīng)]什么必要)
	 */
	public function write($mode = 0, $content = '') {
		switch ($mode) {
			case 0 :
				$content = ob_get_contents ();
				break;
			default :
				break;
		}
		ob_end_flush ();
		try {
			file_put_contents ( $this->cacheid, $content );
		} catch ( Exception $e ) {
			$this->error ( '寫入緩存失敗!請(qǐng)檢查目錄權(quán)限!' );
		}
	}
	/**
	 * 加載緩存
	 * exit() 載入緩存后終止原頁面程序的執(zhí)行,緩存無效則運(yùn)行原頁面程序生成緩存
	 * ob_start() 開啟瀏覽器緩存用于在頁面結(jié)尾處取得頁面內(nèi)容
	 */
	public function load() {
		if ($this->isvalid ()) {
			// 以下兩種方式,哪種方式好?????
			require_once ($this->cacheid);
			echo "<!--緩存-->";
			// echo file_get_contents($this->cacheid);
			exit ();
		} else {
			ob_start ();
		}
	}
	/**
	 * 清除緩存
	 */
	public function clean() {
		try {
			unlink ( $this->cacheid );
		} catch ( Exception $e ) {
			$this->error ( '清除緩存文件失敗!請(qǐng)檢查目錄權(quán)限!' );
		}
	}
	/**
	 * 取得緩存文件路徑
	 */
	private function getcacheid() {
		return $this->dir . md5 ( $this->geturl () ) . $this->ext;
	}
	/**
	 * 檢查目錄是否存在或是否可創(chuàng)建
	 */
	private function dir_isvalid($dir) {
		if (is_dir ( $dir ))
			return true;
		try {
			mkdir ( $dir, 0777 );
		} catch ( Exception $e ) {
			$this->error ( '所設(shè)定緩存目錄不存在并且創(chuàng)建失敗!請(qǐng)檢查目錄權(quán)限!' );
			return false;
		}
		return true;
	}
	/**
	 * 取得當(dāng)前頁面完整url
	 */
	private function geturl() {
		$url = '';
		if (isset ( $_SERVER ['REQUEST_URI'] )) {
			$url = $_SERVER ['REQUEST_URI'];
		} else {
			$url = $_SERVER ['Php_SELF'];
			$url .= empty ( $_SERVER ['QUERY_STRING'] ) ? '' : '?' . $_SERVER ['QUERY_STRING'];
		}
		return $url;
	}
	/**
	 * 輸出錯(cuò)誤信息
	 */
	private function error($str) {
		echo '<div>' . $str . '</div>';
	}
}

使用方法:

使用方法如下:

一部分代碼放在要被緩存邏輯代碼前面:

$cachedir = './Cache/'; // 設(shè)定緩存目錄
		$cache = new Cache ( $cachedir, 33 ); // 省略參數(shù)即采用缺省設(shè)置, $cache = new Cache($cachedir); 
		if (@$_GET ['cacheact'] != 'rewrite' || @$_GET ['clearCache'] == 'ok') // 此處為一技巧,通過xx.Php?cacheact=rewrite更新緩存,以此類推,還可以設(shè)定一些其它操作
			$cache->load (); // 裝載緩存,緩存有效則不執(zhí)行以下頁面代碼
		// 頁面代碼開始

一部分放在被緩存邏輯代碼后面:

// 頁面代碼結(jié)束
		$cache->write (); // 首次運(yùn)行或緩存過期,生成緩存

原文地址:http://sijienet.com/bbs/?leibie=showinfo&id=50

以上就介紹了php 緩存工具類 實(shí)現(xiàn)網(wǎng)頁緩存,包括了方面的內(nèi)容,希望對(duì)PHP教程有興趣的朋友有所幫助。

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

華為GT3 Pro和GT4的差異是什么? 華為GT3 Pro和GT4的差異是什么? Dec 29, 2023 pm 02:27 PM

許多用戶在選擇智能手表的時(shí)候都會(huì)選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什么區(qū)別,下面就就給大家介紹一下二者。華為GT3pro和GT4有什么區(qū)別一、外觀GT4:46mm和41mm,材質(zhì)是玻璃表鏡+不銹鋼機(jī)身+高分纖維后殼。GT3pro:46.6mm和42.9mm,材質(zhì)是藍(lán)寶石玻璃表鏡+鈦金屬機(jī)身/陶瓷機(jī)身+陶瓷后殼二、健康GT4:采用最新的華為Truseen5.5+算法,結(jié)果會(huì)更加的精準(zhǔn)。GT3pro:多了ECG心電圖和血管及安

function是什么意思 function是什么意思 Aug 04, 2023 am 10:33 AM

function是函數(shù)的意思,是一段具有特定功能的可重復(fù)使用的代碼塊,是程序的基本組成單元之一,可以接受輸入?yún)?shù),執(zhí)行特定的操作,并返回結(jié)果,其目的是封裝一段可重復(fù)使用的代碼,提高代碼的可重用性和可維護(hù)性。

修復(fù):截圖工具在 Windows 11 中不起作用 修復(fù):截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

為什么截圖工具在Windows11上不起作用了解問題的根本原因有助于找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對(duì)焦助手已打開:這可以防止截圖工具打開。應(yīng)用程序損壞:如果截圖工具在啟動(dòng)時(shí)崩潰,則可能已損壞。過時(shí)的圖形驅(qū)動(dòng)程序:不兼容的驅(qū)動(dòng)程序可能會(huì)干擾截圖工具。來自其他應(yīng)用程序的干擾:其他正在運(yùn)行的應(yīng)用程序可能與截圖工具沖突。證書已過期:升級(jí)過程中的錯(cuò)誤可能會(huì)導(dǎo)致此issu簡單的解決方案這些適合大多數(shù)用戶,不需要任何特殊的技術(shù)知識(shí)。1.更新窗口和Microsoft應(yīng)用商店應(yīng)用程

java中private是什么意思 java中private是什么意思 Nov 24, 2022 pm 06:27 PM

在java中,private的意思為“私有的”,是一種訪問控制修飾符,用于修飾類、屬性和方法。用private修飾的類成員,只能被該類自身的方法訪問和修改,而不能被任何其他類(包括該類的子類)訪問和引用;因此,private修飾符具有最高的保護(hù)級(jí)別。

'enumerate()'函數(shù)在Python中的用途是什么? 'enumerate()'函數(shù)在Python中的用途是什么? Sep 01, 2023 am 11:29 AM

在本文中,我們將了解enumerate()函數(shù)以及Python中“enumerate()”函數(shù)的用途。什么是enumerate()函數(shù)?Python的enumerate()函數(shù)接受數(shù)據(jù)集合作為參數(shù)并返回一個(gè)枚舉對(duì)象。枚舉對(duì)象以鍵值對(duì)的形式返回。key是每個(gè)item對(duì)應(yīng)的索引,value是items。語法enumerate(iterable,start)參數(shù)iterable-傳入的數(shù)據(jù)集合可以作為枚舉對(duì)象返回,稱為iterablestart-顧名思義,枚舉對(duì)象的起始索引由start定義。如果我們忽

MySQL.proc表的作用和功能詳解 MySQL.proc表的作用和功能詳解 Mar 16, 2024 am 09:03 AM

MySQL.proc表的作用和功能詳解MySQL是一種流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者在使用MySQL時(shí)常常會(huì)涉及到存儲(chǔ)過程(StoredProcedure)的創(chuàng)建和管理。而MySQL.proc表則是一個(gè)非常重要的系統(tǒng)表,它存儲(chǔ)了數(shù)據(jù)庫中所有的存儲(chǔ)過程的相關(guān)信息,包括存儲(chǔ)過程的名稱、定義、參數(shù)等。在本文中,我們將詳細(xì)解釋MySQL.proc表的作用和功能

如何修復(fù)無法連接到iPhone上的App Store錯(cuò)誤 如何修復(fù)無法連接到iPhone上的App Store錯(cuò)誤 Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步驟檢查蘋果的系統(tǒng)狀態(tài):在深入研究復(fù)雜的解決方案之前,讓我們從基礎(chǔ)知識(shí)開始。問題可能不在于您的設(shè)備;蘋果的服務(wù)器可能會(huì)關(guān)閉。訪問Apple的系統(tǒng)狀態(tài)頁面,查看AppStore是否正常工作。如果有問題,您所能做的就是等待Apple修復(fù)它。檢查您的互聯(lián)網(wǎng)連接:確保您擁有穩(wěn)定的互聯(lián)網(wǎng)連接,因?yàn)椤盁o法連接到AppStore”問題有時(shí)可歸因于連接不良。嘗試在Wi-Fi和移動(dòng)數(shù)據(jù)之間切換或重置網(wǎng)絡(luò)設(shè)置(“常規(guī)”>“重置”>“重置網(wǎng)絡(luò)設(shè)置”>設(shè)置)。更新您的iOS版本:

php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出,該如何解決 php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出,該如何解決 Jun 13, 2016 am 10:23 AM

php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出而不是在空白頁彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code

See all articles