php伺服器緩存
memcached是高性能的分布式內存緩存伺服器,通過緩存資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度,memcached 使用了「Key=>Value」方式組織數據,可以允許不同主機上的多個用戶同時訪問這個緩存系統,一般用於大型網站使用,memcached使用內存緩存數據,所以它是易失的,當伺服器重啟,或者memcached進程中止,數據便會丟失,所以 memcached不能用來持久保存數據.
『貳』 php 數據緩存
1、普遍緩存技術:
數據緩存:這里所說的數據緩存是指資料庫查詢PHP緩存機制,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,如果不存在,就連接資料庫,得到數據,並把查詢結果序列化後保存到文件中,以後同樣的查詢結果就直接從緩存表或文件中獲得。
用的最廣的例子看Discuz的搜索功能,把結果ID緩存到一個表中,下次搜索相同關鍵字時先搜索緩存表。
舉個常用的方法,多表關聯的時候,把附表中的內容生成數組保存到主表的一個欄位中,需要的時候數組分解一下,這樣的好處是只讀一個表,壞處就是兩個數據同步會多不少步驟,資料庫永遠是瓶頸,用硬碟換速度,是這個的關鍵點。
2、 頁面緩存:
每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,如果不存在,就連接資料庫,得到數據,顯示頁面並同時生成緩存頁面文件,這樣下次訪問的時候頁面文件就發揮作用了。(模板引擎和網上常見的一些PHP緩存機制類通常有此功能)
3、 時間觸發緩存:
檢查文件是否存在並且時間戳小於設置的過期時間,如果文件修改的時間戳比當前時間戳減去過期時間戳大,那麼就用緩存,否則更新緩存。
4、 內容觸發緩存:
當插入數據或更新數據時,強制更新PHP緩存機制。
5、 靜態緩存:
這里所說的靜態緩存是指靜態化,直接生成HTML或XML等文本文件,有更新的時候重生成一次,適合於不太變化的頁面,這就不說了。
以上內容是代碼級的解決方案,我直接CP別的框架,也懶得改,內容都差不多,很容易就做到,而且會幾種方式一起用,但下面的內容是伺服器端的緩存方案,非代碼級的,要有多方的合作才能做到
6、 內存緩存:
Memcached是高性能的,分布式的內存對象PHP緩存機制系統,用於在動態應用中減少資料庫負載,提升訪問速度。
7、 php的緩沖器:
有eaccelerator, apc, phpa,xcache,這個這個就不說了吧,搜索一堆一堆的,自己看啦,知道有這玩意就OK
8、 MYSQL緩存:
這也算非代碼級的,經典的資料庫就是用的這種方式,看下面的運行時間,0.09xxx之類的
9、 基於反向代理的Web緩存:
如Nginx,SQUID,mod_proxy(apache2以上又分為mod_proxy和mod_cache)
10、 DNS輪詢:
BIND是一款開放源碼的DNS伺服器軟體,這個要說起來就大了,自己搜索去,大家知道有這個東西就行了。
『叄』 PHP關於伺服器緩存的提問
一、除非你的整個WEB伺服器只做一個論壇使用,否則用APPLICATION裡面放論壇索引是不科學的。
二、每次都從資料庫裡面取也無可厚非,資料庫有自己查詢緩存系統,這樣的事情交給資料庫去做是對的,老是過份的考慮得這么細,在開發大型系統應用的時候會嚴重影響效率。
三、如果使用一般資料庫,希望進行一下優化,不用每次都在資料庫裡面取,也是可行的,方法是在編寫好每次都從資料庫裡面取的程序以後,進行如下兩個方面的變化:
1是在從資料庫裡面取數的地方,增加判斷是否存在相應的靜態html文件,如果存在就從文件裡面讀,否則從資料庫裡面取出來,並在輸出之前保存到html文件裡面,邏輯如下:
$cachefile='靜態html文件名.html';
if (file_exists($cachefile)) $out_str=file_get_contents($cachefile);
else{ $out_str='';//接著從資料庫裡面取出內容,並添加到字元串變數$out_str後面
$fp=fopen($cachefile,'w');fputs($fp,$out_str);fclose($fp);
}
echo $out_str;//輸出內容
2還需要修改所有針對上面的內容進行delete和update的程序,在修改資料庫之後增加刪除文件的功能,大致結構是:
$cachefile='靜態html文件名.html';
delete($cachefile);
『肆』 php中資料庫的緩存是什麼意思怎麼理解伺服器端的緩存和瀏覽器里的緩存是一個原理嗎
第一個問題:
資料庫緩存
我們知道當網站訪問量很大的時候,用戶直接去訪問你的資料庫,這個時候資料庫壓力很大,往往會導致你的數據伺服器蹦了,或者伺服器崩了。
那麼這個時候的解決方案從資料庫來說,就是加上緩存層,那麼常用的緩存就是redis,memcache了,或者有人使用文件。
第二個問題:
伺服器端的緩存:
文件緩存屬於伺服器上的,redis或者memcache也是屬於你伺服器端的緩存
第三個問題:
瀏覽器緩存,我們知道當你訪問網頁的時候,瀏覽器會去給你緩存網頁,會把你網頁的靜態載入文件去緩存,你按f5刷新實際上第二次訪問的是你的瀏覽器的緩存,當然這個可以根據header頭的參數去改動,你按ctrl+f5就是強制刷新式的訪問,這個時候就會重新去請求伺服器拿文件了!
『伍』 php 緩存怎麼寫
PHP數據緩存常用頁面緩存 靜態緩存
php頁面緩存主要用到的是ob系列函數,如ob_start(),ob_end_flush(),ob_get_contents()
靜態緩存是指靜態化,直接生成HTML或XML等文本文件,有更新的時候重生成一次,適合於不太變化的頁面
給你個頁面緩存的例子
function page_cache($ttl = 0)
{
$ttl = $ttl ? $ttl : PAGE_TTL;//緩存時間,默認3600s
$contents = ob_get_contents();//從緩存中獲取內容
$contents = "<!--page_ttl:".(time() + $ttl)."-->n".$contents;
//加上自定義頭部:過期時間=生成時間+緩存時間
file_put_contents(PAGE_FILE, $contents);//寫入緩存文件中
ob_end_flush();//釋放緩存
}
『陸』 php緩存問題
如果是smarty
設置
$smarty_caching
=false;
//緩存開啟關閉
0
如果是網頁模版
後台應該有設置
『柒』 php的緩存機制有哪些
主要有:
①普遍緩存技術②頁面緩存③時間觸發緩存④內容觸發緩存⑤靜態緩存(就生成html文件)
⑥內存緩存⑦php的緩沖器⑧MYSQL緩存⑨基於反向代理的Web緩存,DNS輪詢
但是一般常用的就 ①②④,其他的是網站數據量大,交互多,為減小伺服器壓力才用到
參考資料:http://blog.163.com/yuzhongfeiyan338@126/blog/static/38688323200981604944905/
『捌』 PHP文件本身如何緩存在伺服器內存中
不清楚你要做什麼,不過有個opcode擴展,會把php「編譯」出的位元組碼(opcode)緩存在內存中,7.0及以上默認開啟
『玖』 PHP緩存怎麼弄的
樓上已經說對了,php下緩存都寫進文件,用的是ob_start函數系列(自己網路下),用的時候包含即可。給你個例子————
<?php
//這里寫段代碼,判斷緩存是否存在,其實就是判斷a.html文件存不存在
//如果緩存存在,直接include 包含即可,然後用 exit 退出
//否則執行下面代碼
ob_start();//緩存開始
echo 'hello,world!';
$content = ob_get_clean();//獲取緩存內容,然後清空緩存
$fp = fopen('a.html', 'w');
//然後fput函數寫入$content的內容到文件,你應該懂的
~~~~~~~不懂追問哦,很高興能幫助你~~
『拾』 php 中如何使用緩存,使用哪種緩存機制最好;
php的緩存三種.有文件緩存,資料庫緩存,memcache緩存;
memcache緩存要求對伺服器支持,而且它的緩存是由期限的,一般是30天。這種緩存的效率是最高的。讀存取的速度最快。
資料庫緩存
和
文件緩存比較簡單。適用小的項目。和php新手