我有一组jsp页面,它们使用jsp,java和DB查询来计算它们的输出。但是,页面上的信息很少改变(可能每次构建一次)。虽然我当然可以正确设置缓存标题,但我也想预先设置它们。
有谁知道我怎么能这样做?
答案 0 :(得分:1)
一些想法:
没有更多信息,这看起来很像初步优化。除非你的服务器真的受到这种操作的影响,否则我会推迟所有优化它的工作。您可能需要几个小时的工作时间并获得0.05%的执行时间。可能还有其他问题可以节省10%或50%的执行时间。找到那些并在那里投入时间 - 它的投资回报率更高。由于优化代码通常对于追随您的维护人员来说并不是很明显,而是优化其真正相关的位置。
如果您确定这实际上消耗了重要的性能并且值得优化,那么可以通过不同的方式来思考问题:仅仅因为您使用Tomcat,您不必使用JSP,但是您还可以缓冲普通输出并从(缓存)servlet传递它。 Servlet API为您提供ServletFilters,您可以使用它来拦截输出:编写Servlet过滤器以缓冲第一个结果并在以后交付它,同时阻止后面的JSP
另外,看看JSP是如何生成的:它们实际上被转换(编译)成一个servlet,它实际上硬编码了很多输出。如果你只是使用bean来缓存所有(有些)变量输出并在JSP中使用它 - 而不是实际的数据库查找 - 那么在使用JSP时根本没有太多的性能损失。您可以在tomcat的工作目录中查看生成的servlet - 了解在后台实际发生的事情,这非常有趣。
现在我写了这个,我对订单的偏好是: