首先抱歉我的英语不好。请让我先解释一下我的情景, 我将数据存储在Memcached中作为一组gzip数据。我把每个数据称为一大块。 每个都是从数据库加载,预先压缩并存储在Memcached中。这个 在服务可用之前作为准备过程完成。 (减少数据库的负担)
我的服务器代码然后只是从Memcached中获取gzip数据,然后立即返回gzip数据。
从用户的角度来看,他们可以同时请求任意数量的块。 例如,假设Memcached上有10个块,用户可以请求单个块 块,在这种情况下,我可以发回一个gzip文件作为响应没有任何问题。 但是当用户同时请求多个块时,我根本就不知道如何 处理它。获取多个块并将它们压缩为单个GZIP文件 不是解决方案。我只想将请求的gzip文件作为单个请求同时发送。
我的第一个想法是我将从数据库加载数据,然后将它们存储在 Memcached没有压缩它们。当请求进入时,我将获得存储的数据 Memcached然后压缩它并将其发送回去。但这样做肯定是浪费cpu 因为必须在每次创建响应时都进行压缩。所以我想要一个 不压缩它们的方法,只需立即发送回来,浏览器仍然可以理解 我送的是什么。
如果我的问题让你困惑,请告诉我,我会尽力详细说明。因为我真的 需要帮助。
答案 0 :(得分:1)
基本上,您需要为数据提供一些种容器格式。这可能就像发送包含以下内容的单一响应一样简单:
(当然每个块都已经过gzip压缩了。)
或者你可以创建一个没有压缩的zip文件来包含多个“文件”,每个文件都是一个gzip压缩块。这实际上取决于您的客户将如何处理结果。 客户端在哪里,确切地说?
答案 1 :(得分:0)
HTTP本身支持gzip压缩。我建议你使用它。