我根本没有任何缓存经验,所以这看起来像是一个愚蠢的问题,但你怎么知道何时缓存你的数据?我甚至找不到一个谈论这个的网站,但它可能只是我的搜索技巧或者可能需要考虑的太多变量?
我很可能会使用APC.有没有人有任何关于缓存它所需的最少数据量的例子?例如,假设您有一个包含100个项目的数组,并且您在其上使用foreach循环并执行一些简单的数组操作,是否应该缓存结果?如果它有1000件物品,10000件物品等怎么样?
你应该缓存数据库查询的结果吗?你应该缓存什么样的查询?我假设一个简单的选择,也许一对mysql数据库的连接语句不需要缓存,或者它呢?假设启用了mySQL查询缓存,这是否意味着您不需要在应用程序层中缓存,或者您是否还应该这样做?
如果你实例化一个对象,你应该缓存它吗?如何确定是否应该缓存?因此,关于缓存内容的一般指南会很好,示例也非常有用,谢谢.
当您查看从APC / memcache / WinCache / redis / etc中的数据库中读取的缓存数据时,您应该知道在更新数据库时它不会更新,除非您明确编写代码以保留数据库和缓存同步.因此,当来自数据库的数据不经常更改时,缓存最有效,但是还需要更复杂和/或更昂贵的查询来从数据库中检索该数据(否则,您也可以在数据库中从数据库中读取它需要它)…如此昂贵的连接查询,无论何时运行都返回相同的数据记录是主要候选者.
并始终测试以查看从数据库读取查询是否比从缓存更快.正确的数据库索引可以极大地改善数据库访问时间,尤其是大多数数据库也维护自己的内部缓存,因此除非数据库开销合理,否则不要使用APC或等效的缓存数据.
并始终测试以查看从数据库读取查询是否比从缓存更快.正确的数据库索引可以极大地改善数据库访问时间,尤其是大多数数据库也维护自己的内部缓存,因此除非数据库开销合理,否则不要使用APC或等效的缓存数据.
您还需要了解缓存中的空间使用情况.大多数缓存都是固定大小的,您不希望它们溢出…所以不要使用它们来存储大量数据.使用APC提供的apc.PHP脚本来监控缓存使用情况(尽管确保访问您网站的任何人和所有人都无法公开访问它……安全性不佳).
当在缓存中保存对象时,对象将在存储时被序列化(),并在被检索时被反序列化(),因此存在开销.具有资源属性的对象将丢失该资源;所以不要存储数据库访问对象.