在客户端浏览器中解压缩内容

时间:2010-10-18 08:05:50

标签: javascript performance client-side

我很想知道通过在单个压缩文件中发送不同类型的内容来减少服务器上的http请求的可能性,然后在客户端的浏览器上解压缩并将内容(图像,css,js)放在应有的位置。

我在某处读过firefox正在计划在未来的版本中提供这些功能,但它尚未完成,而且它不会是标准版本。

你们会为此建议任何解决方案吗?可以使用Flash在客户端解压缩压缩文件以供日后使用吗?

由于

2 个答案:

答案 0 :(得分:2)

在得到你问的问题之前,我必须先读几遍你的问题。听起来你想基本上将你网站的所有元素组合成一个可下载的文件。

我非常有信心说我不相信这是可能的或可取的。

首先,您声明您已经听说过Firefox可能会支持这一点。我没有听说过,但即使他们这样做了,你还能在支持其他浏览器的同时使用该功能吗?

但即使你能做到这一点,你也会将其标记为“性能调整”,理由是你将节省一些http请求。但是,在您努力保存http请求以加快速度的过程中,您需要保持谨慎,以免实际上最终导致速度降低。

组合所有文件可能会将您降低到一个http请求,但是您的站点可能会加载速度较慢,因为在任何文件准备好显示之前需要加载整个文件(与正常页面加载相反)页面加载可能需要一些时间,但至少其中一些可能很快就可以显示了。)

你现在可以做什么,哪些对减少http请求有用,是将你的样式表组合成一个CSS,将你的脚本组合成一个单独的JS文件,将相关图像组合成单个图像文件(google {{ 3}}有关此技术的更多信息)。

即便如此,你还需要注意你合并的文件 - 这样做的目的是减少http请求,这样你就需要利用缓存,否则你最终会让事情变得更糟而不是更好。浏览器只能缓存多个页面上相同的文件,因此您应该只组合在页面加载之间不会更改的文件。例如,仅将您网站上所有页面中使用的Javascript文件组合在一起。

我的最后评论是重复我已经说过的内容:谨慎过度优化,以至于你实际上最终放慢了速度。

答案 1 :(得分:2)

我们或多或少地在网上描述了你对响应时间非常满意。

原始文件都是分开的(HTML,CSS,JS,图像),我们在它们上进行开发 然后,当我们转向生产时,我们有一个shell脚本:

  • 使用YUI压缩器来压缩CSS和JS
  • 读取所有图像并将其转换为data:image/png;base64,...
  • 从HTML
  • 中删除所有空格和注释
  • 所有这些资源都内嵌在HTML

页面大约300kb并且通常被缓存。
服务器gzip它,然后网络的实际大小更低。
我们不使用任何额外的压缩。

然后第二次调用获取数据(我们的JSON)并开始将其呈现给客户端。