2014-09-01 105 views
0

目前我正在爲我的網站使用共享託管域名。但是我們目前在其中一個表格中有大約11,00,000行。因此,需要花費大量時間來加載網頁。所以我們想要爲我們的站點實現像APC或memcache這樣的數據庫緩存技術。但是在共享域中我們沒有這些設施可用,我們只有eaccelerator.But eaccelerator不緩存數據庫調用,如果我沒有錯。所以考慮到所有這些我們想要移動到VPS的點,在這種情況下,我們需要使用哪種數據庫緩存技術來使用APC或memcache來減少頁面加載時間...請指導VPS和更好的緩存技術兩個apache php使用哪種緩存技術

+0

數據庫表中的11,000,000行不會自動等於慢速站點或需要緩存。究竟花了那麼久?你不需要在同一頁面上全部11米的行,是嗎?如果你說你的數據庫查詢變慢了,你可以通過使用更好的查詢和/或在你的表上添加適當的**索引**來加快速度。 – deceze 2014-09-01 09:21:37

+0

我們必須在這裏基本上使用像查詢。我們也在做分頁,首先顯示20條記錄和2列的數量。我們只使用2個查詢...我們如何加快查詢在這種情況下先生沒有緩存 – 2014-09-01 09:48:01

回答

-1

APC是另類PHP緩存並僅適用於PHP。而Memcahced將獨立於任何語言工作。

+0

因此,對於我的情況,我不喜歡VPS中的APC?或者是否有其他緩存技術,我可以implmenet共享主機 – 2014-09-01 07:37:18

+0

在你的情況下,我會建議去Memcached。 – Tristup 2014-09-01 07:38:49

+0

但我們只是在尋找PHP。那麼爲什麼我們應該去memcache.I fu可以突出這一點請 – 2014-09-01 07:41:12

0

我們也有類似的網站,我們使用APC

APC將緩存操作碼,以及所生成的HTML。這有助於避免不需要的點擊頁面

還應啓用mysql的緩存來查詢

+0

我們也應該去爲APC是否像你們這樣做???而且它可以在共享服務器 – 2014-09-01 07:40:08

+0

實現我不認爲你可以在共​​享主機環境中實現它因爲APC是作爲PHP擴展加載的。 你可以很容易地在VPS上實現 – Amol 2014-09-01 07:42:36

+0

那麼在進行APC緩存(如RAM,CPU或帶寬)之前,我們需要看到VPS的任何主要配置? – 2014-09-01 07:44:29

0

我有地方,我需要獲取從具有超過100.000記錄數據庫表中的行任務的緩存結果。它是一個可滾動頁面。所以我做的是獲取前50條記錄並在第一次調用中緩存下一個50條記錄。在向下滾動事件中,我寫了一個ajax請求來檢查數據是否在緩存中可用;如果沒有,我從數據庫中提取它,並緩存下50個。它工作得很好,解決了不便的加載時間。

如果您有類似的情況,您可能會從此方法中受益。

ps:我用過memcache。

0

從你的評論我認爲你正在做一個LIKE %..%查詢,並希望分頁結果。首先,調查FULLTEXT指數是否適合您,因爲它們應該表現更好。如果這不是一個選項,你可以添加一個簡單的緩存,像這樣:

  1. 對待每一個獨特的搜索項作爲ID,也就是說,如果在您的網址你有..?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次查詢就會運行一次清理任務。在服務器負載和數據新鮮度之間取得平衡。緩存失效是整本書可以寫成的話題,BTW。

這是一個簡單的窮人緩存實現。這並不是很好,但如果你完全沒有其他工作要做,那比反覆運行慢速查詢要好。

+0

即時消息在表中執行搜索的列,我已將該表分配爲FULLTEXT,但是當我運行全文即匹配查詢代替類似的查詢我沒有得到任何結果。我不能得到,爲什麼是這樣的..如果你可以請糾正我的全文查詢問題,我認爲我的頁面加載時間會減少。 – 2014-09-01 16:42:09