PHP缓存 - 在数据库中保存或创建文件更快吗?

时间:2011-05-19 03:23:24

标签: php mysql caching

我目前正在缓存动态生成的PHP页面,方法是将它们保存到具有到期时间字段的数据库中。如果再次请求该页面,程序将检查要提供的页面的未过期缓存版本,并且只有在找不到该页面时才重新生成该页面。

这很好用 - 但是它会减少服务器上的负载以将缓存的页面保存为文件而不是保存到数据库中吗?我可以在文件中使用命名约定来处理到期时间。

如果从文件而不是数据库读取/写入更快,更少服务器负担,我将切换到那。有谁知道哪种更快/最佳做法?

4 个答案:

答案 0 :(得分:6)

  

如果从文件而不是数据库读取/写入更快,更少服务器负担,我将切换到那。有谁知道哪种更快/最佳做法?

最快的是使用静态文件,因为您甚至可以在不启动PHP(使用RewriteRules)的情况下发出缓存。但是,如果你有多个前端,它将无法正确缩放。

下一个最好的事情是将它存储在内存中,例如使用Memcache

最不可取的是使用SQL。如果坚持使用它,至少可以通过使用内存存储引擎或等效内容(例如,存储在RAM磁盘上的表空间中的未记录表,如果您正在使用PostgreSQL)来帮助您获得硬盘驱动器。

答案 1 :(得分:2)

两个选项都使用文件系统,因为(假设您使用的是没有MEMORY / HEAP表的MySQL)数据库记录仍然存储在文件中。

如果您在请求缓存数据时有活动数据库连接,我会坚持使用数据库。

答案 2 :(得分:0)

这是一些有趣的东西,我从来没有尝试过,但听过很多好话。您可以使用Google Spreadsheet API通过http请求充当数据库。这听起来(至少在理论上)就像它是这样一个问题的理想解决方案。不是你的问题的答案只是另一种选择。

答案 3 :(得分:0)

对于您的问题,没有一个真正的答案,它实际上取决于查询的数量和数据库使用的缓存与解析文件所花费的时间相比。许多其他因素也可能发生。

然而您可以像Denis建议的那样使用Memcached之类的PHP扩展。通过使用类似Doctrine的框架,这与数据库结合使用效果更好。这样可以使用数据库轻松管理数据。并通过缓存查询结果来提供生产中的实际数据。