[英]Which caching technique to be used for apache php
目前,我正在為我的網站使用共享托管域。但是,我們目前在其中一個表中大約有1,100,000行,因此加載網頁需要花費大量時間,因此我們想實現數據庫緩存技術,例如APC或我們的站點的內存緩存。但是在共享域中,我們沒有那些可用的功能,我們只有eaccelerator。但是eaccelerator不會緩存數據庫調用,如果我沒有記錯的話。因此,考慮所有這些點,我們想轉移到VPS,在這種情況下。我們需要使用哪種數據庫緩存技術來使用APC或memcache來減少頁面加載時間...請在VPS和更好的兩種緩存技術上進行指導
我們有類似的網站,我們使用APC
APC將緩存操作碼以及生成的html。 這有助於避免不必要的頁面點擊
您還應該在mysql上啟用緩存以緩存查詢結果
我有一個任務,需要從記錄超過100.000的數據庫表中獲取行。 這是一個可滾動的頁面。 所以我要做的是獲取前50條記錄,並在第一個調用中緩存后50條記錄。 在向下滾動事件中,我編寫了一個ajax請求,以檢查緩存中是否有可用數據; 如果不是的話,我從數據庫中獲取了它,並緩存了下50個。它運行得很好,並解決了不方便的加載時間。
如果您有類似的情況,則可以從這種方法中受益。
ps:我用過內存緩存。
從您的評論中,我認為您正在執行類似LIKE %..%
查詢,並希望對結果進行分頁。 首先,調查FULLTEXT索引是否適合您,因為它們應具有更好的性能。 如果這不是一個選擇,則可以添加一個簡單的緩存,如下所示:
..?search=foobar
,則“ foobar”是結果集的ID。 將其保留在所有鏈接中,例如..?search=foobar&page=2
。 sha1($query)
或sha1(strtolower($query))
。 serialize
數據並將其存儲在文件中。 unserialize
,顯示與請求頁面相對應的數組部分。 if (rand(0, 100) == 1) ..
這樣的操作來完成,這將平均每100個查詢運行一次清理作業。 在服務器負載和數據新鮮度之間取得平衡。 緩存無效是整個書籍可以寫的話題,順便說一句。 那是一個簡單的窮人的緩存實現。 這不是很好,但是如果您別無其他工作,則比一遍又一遍地運行緩慢的查詢要好。
APC是備用PHP緩存,僅與PHP一起使用。 而Memcahced可以獨立於任何語言工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.