gpt4 book ai didi

jsp - 我如何设置 Apache Tomcat 来预呈现它所服务的页面的子集?

转载 作者:行者123 更新时间:2023-11-28 22:54:19 34 4
gpt4 key购买 nike

我有一组 jsp 页面,它们使用 jsp、java 和 DB 查询来计算它们的输出。然而,页面上的信息很少改变(可能每个构建一次)。虽然我当然可以正确设置缓存 header ,但我也想预渲染它们。

有人知道我该怎么做吗?

最佳答案

一些想法:

如果没有更多信息,这看起来很像初步优化。除非你的服务器真的受到这个操作的影响,否则我会把所有优化它的工作推迟到它成为的时候。您可能会完成几个小时的工作并获得 0.05% 的执行时间。可能还有其他问题可以为您节省 10% 或 50% 的执行时间。找到那些并在那里投入时间——投资返回率要高得多。由于优化后的代码对于您之后的维护者来说通常不是很明显,而是在真正相关的地方进行优化。

如果您确定这实际上会消耗大量性能并且值得优化,则可以通过不同的方式来考虑这个问题:仅仅因为您使用的是 Tomcat,就不必使用 JSP,但您也可以缓冲普通输出并从(缓存)servlet 传递它。 Servlet API 为您提供了 ServletFilters,您可以使用它来拦截输出:编写一个 Servlet 过滤器来缓冲第一个结果并稍后传递它,同时在后面阻止 JSP

另外,看看 JSP 是如何生成的:它们实际上被转换(编译)成一个 servlet,该 servlet 硬编码了大量的输出。如果您只是使用一个 bean 来缓存所有(某种程度上)变量输出并在 JSP 中使用它——而不是实际的数据库查找——那么使用 JSP 根本不会造成太多性能损失。您可以在 tomcat 的工作目录中查看生成的 servlet - 了解后台实际发生的情况,这很有趣。

既然我已经写完了,我对顺序的偏好是:

  1. 不要做任何事情,除非你能证明任何改变都会带来显着的改进
  2. 将输出缓存在一个bean中,只使用JSP打印bean的内容(bean的查找意味着:第一次查找访问DB,后续查找返回相同的对象)
  3. Servlet 过滤器。但是,我个人不喜欢将 HTML 级别的缓存作为一般问题解决方案,如果它不是针对 CSS/JS 库/图像之类的资源(并且对于它们而言,它是 HTTP 级别)。

关于jsp - 我如何设置 Apache Tomcat 来预呈现它所服务的页面的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619620/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com