【问题标题】:Is it a good idea to cache/read data with xml instead of reading from MySQL database?使用 xml 缓存/读取数据而不是从 MySQL 数据库读取数据是个好主意吗?
【发布时间】:2012-10-19 20:21:32
【问题描述】:

我已经运行自己的博客系统有一段时间了,我注意到对于大多数页面,每次访问页面时都需要执行几个 (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可以处理吗?我用这种方法做得对吗?

提前感谢您提供任何信息和提示。

顺便说一句,我还没有考虑使用这些模板。

【问题讨论】:

    标签: mysql xml performance caching


    【解决方案1】:

    一般来说,如果可能的话,谈论缓存总是个好主意,我想你的 xml 解决方案不会引起太多的性能问题。但是您可以考虑改用Memcache(这可能更方便)。

    如果您出于某种原因不想使用 Memcache 而是使用 XML 缓存,并且您不确定它是否会损害或提高性能,您可以简单地对您的 SQL 查询和缓存解决方案进行基准测试,然后进行比较。

    不过,这听起来像是过早的优化。您的博客真的同时吸引了 300 名访问者吗?还是只是虚构的?

    【讨论】:

    • 感谢 dudelgrincen 提供的信息。 300...当然不是 :) 但我认为如果这可以被证实是一件好事,它可能会用于未来的网站开发。您能否提供有关基准测试的更多信息?现在我的博客只有一个页面执行时间(你知道微秒的差异)。
    • 欢迎您:)。这就是我所说的“基准化”——总体执行时间。如果你想要更多的东西 MySQL 提供集成分析...我不记得确切的语法,但你可以搜索它...类似于:set profiling...your query...show profiles...有关更一般的分析信息,请查看en.wikipedia.org/wiki/Profiling_(computer_programming)跨度>
    【解决方案2】:

    我相信 memcached 可以自动执行类似的操作,我会尝试重用已经存在的内容,而不是重新发明轮子..

    【讨论】:

    • 我的工作与Web开发有关。这就是为什么我从头开始编写一个博客系统供自己使用。只是想在整个开发阶段了解更多信息。
    【解决方案3】:

    应该发布的XAP 9.1 tomorrow 正好包含这个功能。

    我们意识到需要缓存 XML 数据并使用 XPath 对其进行查询,因此我们添加了一个新的原生 XML API。

    [免责声明我在 GigaSpaces 工作]

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 2020-05-02
      • 2012-01-20
      • 2011-08-10
      • 2012-12-26
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 2017-04-25
      相关资源
      最近更新 更多