memcache使用php ob_gzhandler gzipped内容

时间:2009-04-04 03:56:13

标签: php memcached gzip

我最近使用php的ob_gzhandler函数实现了对我内容的压缩,这让事情变得非常简单。

我现在正在尝试将此内容添加到我的内存中,并希望有一种简单的方法可以做到这一点,但我无法在网上找到任何关于完成此操作的内容。

我过去只使用memcache来存储变量中保存的数据,但是使用ob_gzhandler,我没有包含数据的变量。所以我很遗憾甚至不知道从哪里开始。

由于 皮特

-----编辑以获取更多信息------------------------- 正如Cody在下面评论的那样,显然我的问题是模糊的。对此我很抱歉,我试图提供尽可能多的信息,但在这个过程中我真的有些失落。

当我以前使用过memcache时,我已经根据url请求的哈希检查了数据是否存在于memcache中。如果有匹配,我抓住了缓存的数据。如果没有,那么我将创建页面并将其存储在缓存中。

现在我正在尝试做同样的事情,但是使用php ob_gzhandler进行gzip压缩。

但正如Ciaran所说,仅仅采用存储非压缩数据的方法可能更有意义。

同时,存储gzip压缩版本会更好,因为它更小,所以我可以在缓存中存储更多,并且几乎并非所有浏览器都兼容Gzip?

3 个答案:

答案 0 :(得分:1)

听起来好像你在问一个被动缓存,你有一些查询缓存的代码,一旦缓存未命中,它会生成数据,将其插入缓存然后返回。缺点是你的代码总是返回一大块数据,但无论是通过计算还是通过点击缓存返回它,好吧,被调用者代码都不关心。

这是对的吗?

最终,你的问题很模糊,并没有包含足够的信息。

答案 1 :(得分:1)

ob_gzhandler()将返回字符串或false,具体取决于客户端浏览器是否支持gzip,deflate或no encoding。您可能通过ob_start()或类似函数使用此函数。

因为每个客户端的结果不同,所以尝试缓存结果并不是一个好主意(即在某些情况下它会是FALSE,在某些情况下它会是'deflate'编码的响应,并且在其他它将是'gzip'编码的响应)。

缓存被gzip压缩的内容似乎更有意义,并且每次请求都会重新压缩它的“点击” - 实际上这不应该是一个巨大的开销。

答案 2 :(得分:0)

如果它只是减少传输到存储器的字节数,有许多客户端可以在数据发送到内存缓存之前压缩数据 - 取决于大小(压缩50K是有用的,5个字节,而不是那么多) 。正如@Ciaran所说,然后为最终交付重新压缩的开销 - 如果需要 - 并不是那么多。