【问题标题】:Send a cached JSON string as JSON将缓存的 JSON 字符串作为 JSON 发送
【发布时间】:2018-11-05 14:24:13
【问题描述】:

在 express 5.5.1 中,应用程序。我有一个经过验证的 1.79MB json 字符串缓存为全局变量,我们将在本文中将其称为 strJSON

我想将此字符串发送到客户端不进行快速修改,并且我希望标题为:

('Content-Type', 'application/json')

这不起作用:

res.set('Content-Type', 'application/json');
res.send(strJSON);

Express 通过将字符串封装在引号中并在 JSON 中的每个引号之前放置反斜杠来修改字符串。

这会产生相同的结果:

res.json(strJSON);

这会发送未修改的字符串:

res.send(strJSON);

但是,客户端看到这个错误的内容类型:

Content-Type: text/html; charset=utf-8

我不想浪费处理时间将此有效的 JSON 字符串转换为对象,以便 res.send 指示正确的内容类型。将此 json 字符串缓存到全局变量的全部意义在于,它可以尽快从 RAM 发送(需要通过 express 进行最少的准备工作)。

我怎样才能将这个未经修改的字符串作为 application/json 发送?

【问题讨论】:

  • @LonnieBest 我认为如果它是超级必要的高性能你可以放入一些文件并使用网络服务器(nginx)提供它
  • 试试这个:res.type('json').end(strJSON);
  • 也许从中制作 Buffer 并发送缓冲区可能会有所帮助。但我认为它已经自动完成了。所以正如我所说,尝试将这些数据放入 data.json 并从 nginx 提供它
  • 另外附上compression中间件让网络输出更小
  • 经过进一步测试,我认为 res.type('json').send(strJSON) 确实有帮助。

标签: javascript json express ecmascript-6 send


【解决方案1】:

你不能,因为如果它没有在引号中添加反斜杠,它就不是有效的 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多