php中的缓存方法?

php中的缓存方法?,php,caching,Php,Caching,我可以在php中使用哪些可用的缓存方法 缓存HTML输出 缓存一些变量 实现多个缓存方法会很好,所以我需要它们,所有可用的方法(我现在使用文件进行缓存,还有其他想法吗?大多数PHP构建都没有内置缓存机制。尽管有一些扩展可以为您处理缓存 看一看或,因为每次PHP运行都是从页面请求的零开始的,所以调用之间不会有任何持久性,这使得缓存变得毫无意义 这是基本观点。当然,也有实现缓存的方法,有一些包和扩展(比如Zend extensions和APC)可以实现缓存。但是,您应该仔细观察它是否真的提高了性能。

我可以在php中使用哪些可用的缓存方法

缓存HTML输出
缓存一些变量


实现多个缓存方法会很好,所以我需要它们,所有可用的方法(我现在使用文件进行缓存,还有其他想法吗?

大多数PHP构建都没有内置缓存机制。尽管有一些扩展可以为您处理缓存


看一看或

,因为每次PHP运行都是从页面请求的零开始的,所以调用之间不会有任何持久性,这使得缓存变得毫无意义

这是基本观点。当然,也有实现缓存的方法,有一些包和扩展(比如Zend extensions和APC)可以实现缓存。但是,您应该仔细观察它是否真的提高了性能。其他方法,如memcache(用于DB结果),或从PHP切换到Java,通常会产生更好的结果

您可以在$\u会话中存储变量,但不应该在那里保留较大的HTML

请检查您实际想做什么。“字节码缓存”(即节省PHP解析时间)需要由PHP运行时可执行文件完成。对于缓存数据库(SQL)请求/应答对,有。缓存HTML输出,但通常不是一个好主意


另请参见。

如果您使用的是框架,则大多数框架都带有某种形式的缓存机制,您可以使用,例如Zend framework的Zend_缓存。 如果您不使用框架,那么可以使用Pelle ten Cate提到的APC或Memcache。但是,正确的使用方法取决于您的情况,您的网站或应用程序是否在多个服务器上运行,缓存中的信息是否需要在这些服务器之间共享?(如果是,那么像memcache这样的东西就是你的答案,或者如果你觉得勇敢的话,可能是数据库或分布式NoSQL解决方案)。 如果您的代码只在一台服务器上运行,您可以尝试一些简单的操作,比如序列化变量并将它们写入磁盘,然后在每次请求之后,查看文件是否存在,如果存在,请打开它并将字符串反序列化为所需的变量。 但只有在需要很长时间才能正常生成变量的情况下,这才是值得的, (例如,比打开、读取、取消序列化磁盘上的文件所需的时间长)

对于HTML缓存,使用Varnish或Squid这样的代理通常可以让您获得最大的收益,但我意识到这可能不是您的选择。
如果不是,那么您可以使用我上面提到的磁盘写入方法,并将HTML块保存到文件中。在PHP手册中查找ob_start及其朋友。

您希望缓存什么?所谓“缓存”是指简单地缓存服务内容,还是使用memcached等系统。?(请更新您的问题以增加清晰度。)HTML输出和一些变量有时我会问您为什么要缓存,所以您正在寻找服务器端缓存方法?严格来说,$\u会话全局是可以在来自同一客户端的多个请求之间共享的东西,但是如果你不想依赖数据库或文件系统,memcache或APC仍然是你的选择。是的,我知道,这就是我写“基本视图”的原因。当然,有一些方法可以解决这一问题,例如,可以将()内容序列化到文件并将其读回,将文件名存储在$\u会话密钥中,等等。但是,这种方法可能会慢一些,而不是快一些,这取决于您所做的工作。专门的扩展可以在各自的领域做得很好,但是在随机选择任何扩展之前,检查实际的需求/目标是什么是很重要的。我想让站点管理员选择他喜欢的缓存方法,所以我只需要php中所有可用的缓存方法,这就是php中所有通用的可用缓存方法?没有您可以实现特定的缓存,但需要为此编写特定的代码。“打开PHP中的缓存”并没有简单的切换。我知道@foo,我在问如何缓存html信息,以实现将该技术转换为代码并使用它,将另一种技术转换为另一种代码并使用它,然后允许管理员在这两种技术之间进行选择!谢谢有一个问题,我要存储的数据是从数据库中提取的,所以我想减少查询,这就是为什么我要缓存结果(其中结果是生成的HTML页面,其中包含数据库的数据,也称为论坛线程或类似内容),因此,唯一的方法是将HTML输出保存到文件中,而不是反复使用数据库?或者还有其他方法,而不是将输出保存到文件?memcache会很慢,我想,我只使用一台服务器。如果你只使用一台服务器,那么使用memcache就没有真正的意义。是什么让你的数据库查询变慢了?是因为你每页都要做很多,还是因为它们复杂且运行缓慢?无论哪种方式,您仍然可以将缓存的输出保存到DB,因为访问缓存项的查询将非常简单和快速。。。从id=2的缓存_表中选择内容;为什么不呢?您可以轻松地将计算出的HTML存储到APC缓存中供以后使用。这不正是你需要的吗?