我已经运行了自己的博客系统一段时间了,我注意到,对于大多数页面,每次页面都需要执行几个(5-10)相同的数据核心查询被访问。
现在,我正在考虑将数据缓存到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可以处理吗?我用这种方法正确吗?
事先感谢任何信息和提示。
顺便说一句,我还没有考虑使用这些模板。
通常在可能的情况下说话总是好主意,我想您的XML解决方案不会引起很多性能问题。但是您可以考虑使用memcache(可能更方便)。
如果您不想出于某种原因使用memcache,但是XML缓存,并且不确定它是否会损害或提高性能,则可以简单地基于SQL查询和缓存解决方案,然后进行比较。
>但是,在我看来,这就像过早的优化一样。您的博客是否真的同时吸引了300名访问者,或者是一些虚构的情况?
我相信memcached可以自动做类似的事情,我会尝试重复使用已经存在的东西,而不是重新发明轮子。
XAP 9.1明天应发布的功能。
我们意识到需要缓存XML数据并使用XPath查询它,因此我们添加了一个新的本机XML API。
[免责声明我在gigaspaces中工作]