[英]how to use Memcache to speed up the PHP?
我已經為我的PHP Apache localserver服務器(XAMPP)啟用了memcache擴展
但是我不知道如何使用它來加快我的PHP腳本的速度是否在我要加速的每個頁面的頂部編寫以下代碼就足夠了? 還是我應該做些其他事情?
/* procedural API */
$memcache_obj = memcache_connect('127.0.0.1', 11211);
/* OO API */
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
phpinfo()顯示以下詳細信息
memcache support enabled
Active persistent connections 0
Version 2.2.4-dev
Revision $Revision: 1.99 $
謝謝
您可能要考慮使用memcache_pconnect()
代替,但是這樣做有其優點和缺點。
您已經設置了內存緩存。 除非您將其用於某些用途,否則它不會加快任何速度。 您可以緩存以下四個基本內容:
除非您將其用於某些用途,否則它什么也不會做。
您需要對代碼及其使用的算法進行一些基本的分析。 Memcache就像在配方中加鹽:您需要將其添加到正確的部分,否則您將無法獲得好處,反而會妨礙您的進餐。
在PHP中,有幾種類型的緩存可以提高網頁的性能,而內存緩存只是其中之一。 如果您有很多相同的查詢,則可以在數據庫中打開查詢緩存。 如果連接的頁面很多而查詢流量很少,則可以受益於連接池(這將緩存TCP連接)和數據庫中的線程緩存(這將緩存CPU在CPU上的資源)。
如果您要扔很多數據,尤其是字符串,大數組或對象,則可以開始考慮引用並更新不涉及不必要的重新復制的字符串處理(例如,將字符串串聯在一起的代價很高-將它們添加到數組,最后將其內爆一次)。 這可以極大地提高性能和內存。
如果您有很多查詢要在一頁上一遍又一遍地獲取相同的信息,則需要改進數據存儲層。 這將使您可以查詢一次以獲取行,然后在整個頁面中重復使用數據,而無需再次獲取數據。 (這通常是從任意SQL修補程序到對象持久性層的最佳理由。)請注意,這可能涉及對應用程序的大量重新構造。 您可以將對象數據緩存添加到對象層-這將使使用此類對象的所有內容受益,這可能是一個大勝利。 這對於Memcache來說是一個很好的方法,而且應用程序代碼甚至不必知道。 只需注意數據生命周期以及是否或如何進行早期更新。
如果您有很多頁面在進行同樣昂貴的查詢(即使通過數據訪問層通過代理進行查詢),則可以將其緩存幾秒鍾。 不必一定要使用內存緩存,但這是一個不錯的選擇。
最后,如果您有許多永不更改的文件,則可以使用僅服務器靜態文件的單獨服務器。 這為您的執行環境提供了更多的空間來執行代碼,並且您可以調整靜態文件服務器以擅長快速返回文件。 對於感知網站性能而言,這可能是一個巨大的勝利。
IMO,緩存應該改善而不是啟用您的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.