2015-06-20 112 views
0

我創建了一個小的PHP代碼從MySQL特定的表的計數的請求。Mysql的請求緩存

我怎麼能壓縮,爲一個靜態頁面爲了不使每次請求的頁面加載?

例如,我可以將其轉換爲靜態HTML每天都在刷新一次?

+0

您需要*緩存*您的查詢結果,而不是*壓縮*它們。這將有助於告訴我們更多關於您的運營環境的信息 –

回答

1

壓縮裝置你減少這是需要保存或轉移存放東西的大小。但根據你的問題,你想緩存的內容。緩存意味着您暫時存儲生成成本很高的數據,以便下次訪問速度更快,使用次數更少。這可以結合壓縮。例如,在保存靜態頁面之前先壓縮它們,這樣它將比沒有壓縮時佔用更少的存儲空間。但是這會比你看起來更深入。

有不同的方法和緩存技術。它取決於你的應用哪一個是最好的。一般來說,像油漆https://www.varnish-cache.org/這樣的HTTP加速器將成爲緊固件。簡而言之,清漆將在端口80上偵聽並接受http請求。你的網絡服務器(例如nginx,apache,iis)會監聽另一個端口(可能是81)。對於每一個請求清漆都會在他的緩存中查找,可以在磁盤上或在RAM中。如果請求的網站位於緩存中,清漆會在幾百毫秒或更快的時間內以極快的速度遞送,具體取決於您的應用和基礎設施。當它尚未被緩存時,他將從後端服務器獲取該頁面,將其保存在緩存中以供進一步請求並將其傳遞給用戶。通常情況下,這與使用php在靜態文件中存儲內容的結果相同,但使用php花費的時間要快得多。

但這樣的解決方案可能是困難的或者甚至是低效的,當你有很多用戶的具體要求。例如,當用戶可以登錄時,無法輕鬆緩存這些請求:該頁面對每個用戶都不同,因此可能會限制對內容的訪問限制。當你有這樣一個場景時,只對沒有登錄的用戶使用清漆是有意義的。

但你應該注意到,這有什麼好,你在標題中提到做一個MySQL的緩存! MySQL具有查詢緩存本身https://dev.mysql.com/doc/refman/5.1/en/query-cache.html這是一個不同的事情。這隻會緩存數據庫查詢。還有其他的方法來緩存頁面的一部分。像xcache http://xcache.lighttpd.net/它有一個全局存儲,您可以保存數據,這將花費大量資源來生成。

請記住,這些東西都在不同的級別比緩存整個頁面。他們會加快你的網站,但不會像例如清漆那樣做。根據你的問題,它看起來像你想要的東西像清漆。當我錯了時,你應該更具體一些,並且用你想要引入緩存的系統的細節來編輯你的問題。