2012-10-19 119 views
0

我已經運行了我自己的博客系統了一段時間,並且我注意到對於大多數頁面,每次頁面訪問時都需要執行幾次(5-10次)相同的數據庫查詢。使用xml緩存/讀取數據而不是從MySQL數據庫讀取數據是一個好主意嗎?

現在我正在考慮將數據緩存到xml文件中。這裏是我這樣做的計劃:

---發帖時/編輯博客,插入/更新數據到MySQL數據庫,並生成xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <id>32</id> 
    <title>caching data with xml</title> 
    <date>2012-10-01</date> 
    <content><![CDATA[<p>blah...blah...blah...</p>]]></content> 
</data> 

---當頁面被訪問,首先檢查文件是否存在(以防萬一),然後解析xml文件並格式化/輸出數據。

if(file_exists("path/to/blog/32.xml")) { 
    $data = simplexml_load_file("path/to/blog/32.xml"); 
    echo '<h2'>.$data->title.'</h2>'; 
    echo '<p'>.$data->date.'</p>'; 
    echo $data->content; 
} 
else { 
    mysql_query(...); 
} 

通過這樣的MySQL可以做少得多的工作,但我不能肯定這是否會後來引起任何問題,像100名或300遊客在同一時間訪問同一頁面。 PHP可以處理嗎?我用這種方法做對了嗎?

在此先感謝您的任何信息和提示。

順便說一句,我沒有考慮使用這些模板呢。

回答

0

我認爲,分佈式緩存可以自動做這樣的事情,我會嘗試重用什麼已經存在,而不是重新發明輪子的..

+0

我的工作與網站開發有關。這就是爲什麼我從頭開始編寫博客系統供我自己使用。只是想在整個開發階段學到更多。 – user1643156

1

一般講緩存總是在可能的情況好主意,我想你的XML解決方案不會造成太多性能問題。但你可以考慮使用Memcache來代替(這可能會更方便)。

如果您不想使用Memcache出於某種原因而使用XML緩存,並且您不確定它是否會損害或提高性能,則可以簡單地將您的SQL查詢和您的緩存解決方案進行基準測試,然後進行比較。

但是,這聽起來像我過早優化。您的博客是否真的能夠同時獲得300位訪問者,或者這是一個虛構的案例?

+0

感謝dudelgrincen提供的信息。 300 ...當然不是:)但我認爲如果這可以被確認爲一件好事,它可能會用於未來的網站開發。你能否提供更多關於基準的信息?現在我的博客只有一個頁面執行時間(你知道微秒差異)。 – user1643156

+0

歡迎:)。多數民衆贊成在'banchmarking' - 整體執行時間。如果你想要更多的東西MySQL提供集成的分析...我不記得確切的語法,但你可以搜索它...它是這樣的:'集分析...你的查詢...顯示配置文件'...對於更通用的概要信息請參閱http://en.wikipedia.org/wiki/Profiling_(computer_programming) –

0

XAP 9.1應該發佈的tomorrow正好包含這個能力。

我們意識到需要緩存XML數據並使用XPath查詢它,所以我們添加了一個新的本機XML API。

[免責聲明我在GigaSpaces工作]

相關問題