【问题标题】:PHP response caching: file vs MySQLPHP 响应缓存:文件与 MySQL
【发布时间】:2016-10-13 23:29:44
【问题描述】:

我有一个 HTML 主页,它对 PHP 文件进行了一些 Ajax 调用(大约 10 次)。

PHP 从不同的网站(通过file_get_contents)获取一些数据并将其输出为 JSON。输出的平均长度为 4000 个字符。为了不使我的服务器向网站发出的请求数量过多,我想将相同查询的响应缓存 30-60 分钟。

HTML 主页包含一个搜索输入,因此基本上可以编写任何内容,而且我可能需要有很多不同的缓存文件。 在这种情况下,数据库存储(MySQL)还是文件,哪种方法效率更高?

【问题讨论】:

  • 数据库比磁盘快。 Redis 或 memcache 比数据库快。
  • 如果您需要认真实现缓存持续时间,请考虑使用内置此功能的 Redis,而不是重新发明轮子。
  • @jszobody 假设磁盘速度相同,读取文件肯定比查询数据库快。特别是如果服务器有足够的空闲 RAM 用于页面缓存。但是,出于可扩展性的考虑,redis 或 memcache 将是理想的选择。
  • @Devon 是的,我想如果 OP 为每个搜索词存储一个文件,并且永远不需要进行部分匹配或查询缓存数据的内容......文件系统可能运行良好.相当有限,如果 OP 想要做更多的事情,显然会成为性能问题。

标签: php mysql database caching


【解决方案1】:

尚未提及的一个重要因素是您网站上的流量,如果您每小时为少数访问者提供服务,缓存将毫无用处。由于您没有指定它,我假设您为足够多的用户提供服务,让您考虑缓存。

在这种情况下,这将取决于您的数据库速度,如果您有一个简单的 SELECT 查询和一个相对较小的数据库,我不会考虑文件/磁盘缓存。很可能直接运行查询比打开文件要快。如果您有一个复杂的查询和一个大数据库,我们有 1 个在工作,它有 100 多个 gigs 大,比我预期的文件缓存要好。

Memcache 速度最快,但存储空间有限,因此最佳做法是仅在其中存储您希望随时访问的最重要的内容。

始终在您的脚本中添加计时器并测试多个缓存解决方案的速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多