簡體   English   中英

哪種緩存技術可用於Apache PHP

[英]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索引是否適合您,因為它們應具有更好的性能。 如果這不是一個選擇,則可以添加一個簡單的緩存,如下所示:

  1. 將每個唯一的搜索詞視為一個ID,即,如果您的URL中具有..?search=foobar ,則“ foobar”是結果集的ID。 將其保留在所有鏈接中,例如..?search=foobar&page=2
  2. 如果結果集尚不存在(請參見下文),請創建它:
    1. 使用緩慢的查詢查詢數據庫。
    2. 將所有結果放入數組。 不要過度使用它,您不想存儲數百兆字節。
    3. 為每個查詢創建一個唯一的文件名,例如sha1($query)sha1(strtolower($query))
    4. serialize數據並將其存儲在文件中。
  3. 從文件中獲取數據,對其進行反unserialize ,顯示與請求頁面相對應的數組部分。
  4. 有時,刪除舊的緩存結果。 您可以使用if (rand(0, 100) == 1) ..這樣的操作來完成,這將平均每100個查詢運行一次清理作業。 在服務器負載和數據新鮮度之間取得平衡。 緩存無效是整個書籍可以寫的話題,順便說一句。

那是一個簡單的窮人的緩存實現。 這不是很好,但是如果您別無其他工作,則比一遍又一遍地運行緩慢的查詢要好。

APC是備用PHP緩存,僅與PHP一起使用。 而Memcahced可以獨立於任何語言工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM