【问题标题】:Java EE too big content size of responseJava EE 响应内容太大
【发布时间】:2015-10-28 13:31:52
【问题描述】:

可能我的屏幕可以更好地解释它。

我的问题是我做错了什么或者如何分析更多来自我的 Java Servlet 的响应?我在等待太多回复时遇到了麻烦。即使缓存机制对我来说也不够用。从服务器向jsp页面发送数据应该是其他地方有问题。

这是来自 chrome 检查器的响应大小:

在这里您可以看到我只是将一些 HashMaps 和 ArrayLists 发送回要显示的 jsp 页面。你能帮我或引导我如何更深入地分析问题出在哪里吗?调度程序和jsp之间或数组中的数据过多?如何以 MB 为单位获取数组的实际大小?

EDIT 基于 cmets。这是在 tracking.jsp 文件中循环动态创建的选项卡结构图片(文件本身相当大,有 1700 行代码):

【问题讨论】:

  • 看看tracking.jsp,看看它对这些属性做了什么。例如,它可以创建巨大的循环,从而导致巨大的响应。
  • 是的,我在那里有循环,这是一种不好的做法吗?我的嵌套循环很少。
  • 这取决于您对循环的操作。如果您有 3 个地图,每个地图有 100 个项目,并且您正在对所有这些地图进行嵌套循环,那么您将经历 100³ = 1M 迭代。如果每次迭代都打印出 100 字节的文本,您将在那里生成一个 100MB 的好块。
  • 是的,事实上,类似的事情正在发生,但预期的循环不超过 10 个。所以我想你发现了我的问题!你对这个问题有什么建议吗?我有一些标签,需要与此类似的东西:forum.jquery.com/topic/creating-dinamics-tabs-jquery-jstl 但对于标签,循环是唯一的解决方案。
  • 我给了你很多建议。你需要自己做一些工作。查看jsp,看看逻辑有没有错。

标签: java jsp servlets enterprise


【解决方案1】:

经过一些调查,问题是我在 tracking.jsp 文件中为引导选项卡和嵌套选项卡使用的循环,因此我实现了 jQGrid 框架,用于数据处理和切换具有不同抽象的数据。非常感谢@Kayaman 为我指明了正确的方向。

【讨论】:

    【解决方案2】:

    尝试在forward 调用后删除return 语句。 Flushclose writer 并在 else 块中删除 return

    注意:我假设此代码存在于 HttpServlet 的方法之一中。

    【讨论】:

    • 你为什么认为这会有所作为?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多