【问题标题】:How to cache code part in php? [duplicate]如何在php中缓存代码部分? [复制]
【发布时间】:2013-09-12 04:38:11
【问题描述】:

PHP 是否有内置的片段缓存机制来服务器端缓存代码部分?

例如,我有一个查询数据库 15 次的页面。大多数时候结果是相同的,即使在用户之间也是如此。缓存是一个不错的选择! 这些结果以 HTML 格式显示(带有 echo 命令)。缓存该代码部分的结果会很好。我无法在一个变量中收集所有回声。有没有一种简单的方法来“记录”该 php 代码的结果,并保存在缓存中?

谢谢!

【问题讨论】:

  • 没有什么“内置”我知道的,但你可以自己构建一些东西,比如使用file_put_contents将结果写入文件,然后使用filemtime查看结果有多旧?
  • 如果它在一页加载,只需重新加载您在变量中已有的相同数据。默认情况下mysql也会做缓存。
  • 嗯,我必须处理一个动态查询(在循环内)。因此,作为一个整体的输出缓存将是最简单的。因此,将生成的 HTML 缓存在该代码部分中(目前,我使用循环内的 echo 来执行此操作)。

标签: php caching fragment


【解决方案1】:

web application caching 有很多选项。在你的情况下,我会调查

  • 在 PHP 中缓存页面或部分页面。如果代码未设置为简化此操作,您可以打开输出缓冲,然后在某个时间点获取缓冲区并将其写入磁盘。
  • 让您的模板缓存部分或全部输出。例如,Smarty 就内置了这个功能。
  • 使用 memcache 或 APC 对结果进行共享内存缓存(尽管在最新版本的 PHP 中已弃用)。
  • 在您的数据库中缓存或规范化您的一些数据,以便以更简单、更快捷的方式进行查询。

【讨论】:

  • 你的第一个提示也带我去this 文章。谢谢!
【解决方案2】:

据我所知,PHP 没有内置的片段缓存机制。您可以手动将片段缓存到物理文件并每 5 分钟(或无论多长时间)检查一次修改后的时间戳,如果它们是“新鲜的”,则将它们包含在内。如果没有,您将运行查询并将它们写入该缓存文件(或多个文件)。

【讨论】:

    【解决方案3】:

    您有责任缓存任何语言的数据库查询结果。
    尝试使用Redis 作为缓存存储 - 它非常易于使用并且具有良好的 PHP 驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 2015-07-18
      • 1970-01-01
      相关资源
      最近更新 更多