1

我有一个 JSON 对象,其中包含大约 150 个表单条目,[key] : [sentence]其中句子通常一遍又一遍地包含相同的文本。例如:

var test = {
    "abc" : "This is the first sentence that is in this JSON object. Hello! Blue."
    "abd" : "Red. This is the second sentence that is in this JSON object. Hi!"
    "abe" : "This is the third sentence that is in this JSON object. Hey! Yellow."
    "abf" : "White. This is the fourte sentence that is in this JSON object. Hola!"
}

您可以看到字符串“此 JSON 对象中的句子”。经常重复。用某个锚点替换它然后在我从对象中获取条目后替换锚点会更有效吗?那是:

var test = {
    "abc" : "This is the first #anchor# Hello!"
    "abd" : "This is the second #anchor# Hi!"
    "abe" : "This is the third #anchor# Hey!"
    "abf" : "This is the fourte #anchor# Hola!"
}

var anchor = "sentence that is in this JSON object."

从 JSON 中获取所需值后,将字符串替换为实际文本?这些句子没有特定的模式,但其中大量包含重复的文本字符串。感谢您的建议!

4

3 回答 3

1

基本上,您正在谈论为计算交易带宽。在原始情况下,需要更多带宽并且不需要下载后计算(字符串替换)。在后一种情况下,带宽较少,但您需要进行后处理。

对我来说,您要为您的用例明确回答这个问题的唯一方法是测试这两个场景并确定最适合您的方案。您还必须确定带宽与执行时间的可能折衷是否是您想要做出的折衷。

于 2013-03-20T21:40:57.947 回答
0

根据有多少条目,这可能会节省一些内存或服务器带宽,但我认为它不值得重建句子所需的复杂性和处理能力。

无论哪种方式,这都是一个糟糕的优化 IMO。使用像 gzip 这样自然处理重复字符串的标准优化。

于 2013-03-20T21:34:13.530 回答
0

如果您的 JSON 下载是 gzip 压缩的(这极有可能),那么您可能不会节省太多带宽(如果有的话)。Gzip 压缩非常擅长删除重复的字符串。

要找出答案,请将您的 JSON 放入一个文件中,然后使用任何 Gzip 实用程序从中创建一个 .gz 文件。对另一个版本的 JSON 执行相同操作,然后比较两个 .gz 文件的大小。您可能会惊讶于差异如此之小。

如果您没有 Gzip 实用程序,请获取7-Zip

除了带宽,您可以通过组合字符串来节省浏览器中的内存。这是否值得取决于我们正在谈论多少个字符串。

于 2013-03-20T21:39:50.580 回答