有极速快乐十分吗|极速快乐十分走势图|

使用ob_start緩沖輸出做簡單緩存

一個簡單的緩存思路
服務器君一共花費了164.300 ms進行了5次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

PHP ob_start()函數是一個功能強大的函數,可以幫助我們處理許多問題。

Output Control 函數可以讓你自由控制腳本中數據的輸出。它非常地有用,特別是對于:當你想在數據已經輸出后,再輸出文件頭的情況。輸出控制函數不對使用header() 或setcookie(), 發送的文件頭信息產生影響,只對那些類似于echo() 和PHP 代碼的數據塊有作用。

所有對header()函數有了解的人都知道,這個函數會發送一段文件頭給瀏覽器,但是如果在使用這個函數之前已經有了任何輸出(包括空輸出,比如空格,回車和換行)就會提示出錯。如果我們去掉第一行的ob_start(),再執行此程序,我們會發現得到了一條錯誤提示:"Header had all ready send by"!但是加上ob_start,就不會提示出錯,原因是當打開了緩沖區,echo后面的字符不會輸出到瀏覽器,而是保留在服務器,直到你使用flush或者ob_end_flush才會輸出,所以并不會有任何文件頭輸出的錯誤!

下面介紹下如何使用ob_start做簡單緩存。

<?php
$time1 = microtime(true);
for($i = 0;$i < 9999;$i++)
{
	//echo $i.'<br />';
}

echo "<br />";
$time2 = microtime(true);
echo $time2 -$time1;

// 輸出 0.0010678768158
?>

沒做緩存的時候,運行時間為 0.0010678768158。

1. 簡單緩存

<?php
$time1 = microtime(true);
$cache_file = "file.txt";
if(file_exists($cache_file))
{
	$info = file_get_contents($cache_file);
	echo $info;
	$time2 = microtime(true);
	echo $time2 -$time1;
	exit();
}
ob_start();
for($i = 0;$i < 9999;$i++)
{
	//echo $i;
}
echo "<br />";
$info = ob_get_contents();
file_put_contents($cache_file ,$info);
$time2 = microtime(true);
echo $time2 -$time1;

// 輸出 0.00075888633728
?>

沒做緩存耗時 0.001秒,做了簡單緩存則為 0.0007秒,緩存后速度稍有提升。

2. 進一步緩存

在前面緩存的基礎上進一行加深。大家都知道,js文件不僅不耗費服務器的資源,同時會被下載到客戶端,秩序下載一次,之后就不消耗帶寬了,缺點就是不可以被搜索引擎抓到包,但是對于辦公系統來說,是一個非常好的選擇。

<?php
$time1 = microtime(true);
function htmltojs($str)
{
	$re='';
	$str=str_replace('\','\\',$str);
	$str=str_replace("'","'",$str);
	$str=str_replace('"','"',$str);
	$str=str_replace('t','',$str);
	$str= split("rn",$str);       //已分割成數組
	for($i=0;$i < count($str); $i++)
	{
		$re.="document.writeln("".$str[$i]."");rn";   //加上js輸出
	}
	$re = str_replace("");
	document.writeln("","",$re);
	return $re;
}

$cache_file = "file.js";
if(file_exists($cache_file))
{
	$info = file_get_contents($cache_file);
	show_script($cache_file);
	$time2 = microtime(true);
	echo $time2 -$time1;
	exit();
}
ob_start();
for($i = 0;$i < 9999;$i++)
{
	//echo $i;
}
echo "<br />";
$info = ob_get_contents();
$info = htmltojs($info);
file_put_contents($cache_file ,$info);
$time2 = microtime(true);
echo $time2 -$time1;
?>

只是簡單地提供一個緩存的思路。

本文地址:http://www.bavugt.tw/librarys/veda/detail/850,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.bavugt.tw/librarys/veda/detail/850

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《Python學習手冊(第4版)》 魯特茲(Mark Lutz) (作者), 李軍 (譯者), 劉紅偉 (譯者), 等 (譯者)

《Python學習手冊(第4版)》學習Python的主要內建對象類型:數字、列表和字典。使用Python語句創建和處理對象,并且學習Python的通用語法模型。使用函數構造和重用代碼,函數是Python的基本過程工具。學習Python模塊:封裝語句、函數以及其他工具,以便構建較大的組件。學習Python的面向對象編程工具,用于組織程序代碼。學習異常處理模型,以及用于編寫較大程序的開發工具。了解高級Python工具,如裝飾器、描述器、元類和Unicode處理等。

更多計算機寶庫...

有极速快乐十分吗
钱程计策 盈股在线配资 富成配资 瑞骏配资 山西快乐十分遗漏 北京三快 湖北快三最新开奖结果 辽宁11选5开奖结 西甲直播哪里看 香港一苹果赛马