压缩网页中的 XML

发布于 2024-07-10 19:44:52 字数 110 浏览 6 评论 0原文

在我的应用程序中,我将相当数量的 XML 从服务器传输到客户端(每次 250K-500K)。

如何在服务器上压缩它,并使用标准 JavaScript 在客户端上解压缩它? 是否可以?

I transfer a fair amount of XML from the server to the client, in my application (250K-500K each time).

How can I compress it on the server, and decompress it on the client using standard JavaScript? Is it possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光病人 2024-07-17 19:44:52

首先,责骂和可能的解决方法。 其次,一个可能疯狂的解决方案。

责骂

如果您在客户端和服务器之间来回发送 250k - 500k 的数据,那么您就做错了。 查看

  1. 仅请求并发送回您需要的信息

  2. 如果 XML 中的信息不经常更改,请将您的 Web 服务器配置为主动http 缓存这些请求。 另外,考虑将“不经常更改的信息”与初始页面请求一起发送,而不是从服务器获取它

  3. 考虑发送 JSON 而不是 XML。 JSON 比 XML 更简洁,并且通常占用更少的空间。 如果您的客户端代码需要 XML 对象,请根据您刚刚下载的 JSON 重建它。

  4. 如果您使用的是 apache,mod_deflate 将为可以接受它的客户端压缩您的数据。 上次我研究 IIS 上的 gzip 编码时,它是在磁盘上进行压缩和解压缩,这很快就成为高负载情况下的瓶颈 (YMMV)

疯狂的解决方案

如果您一心想尝试 compress-in-javascript当然,LZ77 压缩算法已被移植到大多数语言,包括 javascript

找到适合您的服务器平台的类似代码,压缩 XML,然后将其提供给上面链接中找到的代码。 为了避免编码问题,我会在发送压缩数据时尝试将其包装在 XML 或 JSON 中。

Javascript 压缩性能会很慢。这就是我不鼓励这种方法的原因。

First, a scolding and possible workarounds. Second, a possible crazy solution.

The Scolding

If you're sending 250k - 500k back and forth between the client and server, you're doing it wrong. Look into

  1. Only requesting and sending back the information you need

  2. If there's information in the XML that doesn't change often, configure your web-server for aggressive http caching for these requests. Also, consider sending the "doesn't change often information" down with the initial page request instead of grabbing it from the server

  3. Consider sending down JSON instead of XML. JSON is less verbose than XML and will usually take up less space. If your client-side code NEEDS an XML object, reconstruct it from the JSON you just downloaded.

  4. If you're using apache, mod_deflate will gzip your data for client that can accept it. Last time I looked into gzip encoding on IIS it did it's zipping and unzipping on disk, which quickly became a bottle-neck in high load situations (YMMV)

The Crazy Solution

If you're hell-bent on trying the compress-in-javascript route, the LZ77 compression algorithum has been ported to most languages, including javascript.

Find the analogous code for your server platform, compress the XML, and then feed it to the code found in the link above. To avoid encoding issues, I'd try wrapping the compressed data itself in either XML or JSON when sending it down.

Javascript compression performance is going to be slow.as.molasses, which is why I discourage this route.

陌路黄昏 2024-07-17 19:44:52

这是HTTP类型传输吗?

最简单的方法是研究 Web 服务器端的压缩。

XML 通常压缩得非常好。

Is this HTTP type transfers?

The easiest way would be to look into compression at the web server side.

XML Usually compresses really well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文