[英]First response is slow Tomcat
我制作了一个由 Tomcat 托管的 Java Web 应用程序。 它可以在这个URL上找到。
我遇到的问题是,每当我第一次访问该页面时,大约需要 10 秒,而每次访问后仅需要 100-500 毫秒。 我会说速度的提高是由于浏览器缓存,但实际上并非如此,当我也刷新缓存时( ctrl
+ shift
+ r
)我得到了同样的快速响应。
然后过了一段时间,大约 5 分钟,我再次访问该页面,它又变慢了。
您可以通过将搜索参数值更改为例如: 1050
、 1051
、 1052
、 2670
、 4000
、 2300
、 2200
来尝试对提供的 URL 进行一些测试。
我发现的另一个有趣的事实是,无论有效载荷有多大(将 1050 与 2300 进行比较),时间几乎总是相同的。 9-10 秒。 所以我假设像 Java Server 这样的东西必须准备好,这需要时间。
编辑:
我首先认为它可能与 Java/Tomcat 必须加载一些资源有关,然后在一段时间后再次加载 +-3-5 分钟,因为出于某种原因它卸载了它。 但正如我上面所写,即使我更改了 URL 查询字符串(这会在执行期间导致不同的 SQL 查询),它也会再次加载很长时间。 这个问题可以与数据库有关吗? 我正在使用 MySQL。
编辑2:
它更快的原因很可能是服务器缓存。 我有 95% 的把握,那是因为我做了几个实验,例如在 2 台计算机上尝试它等(不,它不是浏览器缓存)。 然后我意识到,如果它只有在缓存时才快,那么实际的.executeQuery
代码行需要这么长时间。 即使通过WorkBench
等客户端发出的完全相同的请求仅需 0.285 秒,也需要 10 秒。 因此,我将尝试使用PreparedStatement
或进一步实验。
内容大小为 200kB。 您需要在前端和后端对其进行优化。
主要问题出在您的后端。 检查为什么需要这么长时间。
在前端,您可以启用 gzip 压缩。 查看 tomcat 文档了解如何操作。 这将减少下载的大小。
由于浏览器缓存,第二次对您来说可能更快。 检查 Firebug 中的响应代码,如果响应是 304,则它被缓存。 响应 200 表示它已从服务器加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.