首先,我为我糟糕的英语感到抱歉。请先让我解释一下我的场景,我将数据作为一组gzip数据存储在Memcached中。我称每一个都是一块数据。每一个都是从数据库中加载的,压缩并预先存储在Memcached中。在服务可用之前,这是一个准备过程。(为了减少数据库的负载)
然后,我的服务器代码简单地从Memcached获取gzip数据,然后立即返回gzip数据。
从用户的角度来看,他们可以同时请求任意数量的块。例如,假设Memcached上有10个块,用户可能会请求一个块,在这种情况下,我可以发送回一个gzip文件作为响应,没有任何问题。但是当用户同时请求多个块时,我简直不知道如何处理它。获取大量块并将它们压缩为单个GZIP文件不是一个解决方案。我只是想发送请求的gzip文件同时作为一个单一的请求。
我的第一个想法是从数据库加载数据,然后将它们存储在Memcached中,而不压缩它们。当请求进入时,我将在Memcached中获取存储的数据,然后将其压缩并发送回去。但这样做肯定是浪费cpu周期,因为每次创建响应时都必须进行压缩。因此,我想要一种不压缩它们的方法,只需立即将它们发送回去,浏览器仍然可以理解我发送的内容。
如果我的问题让你感到困惑,请让我知道我会试着详细阐述它。因为我真的需要帮助。
发布于 2011-09-19 14:05:26
基本上,您需要为数据提供某种容器格式。这可能很简单,只需发送一个包含以下内容的响应:
区块1的
区块2的
(当然,每个块都已经被gzipped压缩了)。
或者,您可以创建一个不带压缩的zip文件,以包含多个“文件”,每个“文件”都是一个gzipped块。这真的取决于你的客户将如何处理结果。这里的客户端到底是什么?
发布于 2011-09-19 14:01:30
HTTP本身支持gzip压缩。我建议你使用它。
https://stackoverflow.com/questions/7466991
复制相似问题