什么时候应该禁用JSP缓冲?

时间:2013-02-01 03:12:31

标签: jsp buffer directive autoflush

Oracle网站上的一些文档(http://docs.oracle.com/cd/A97688_16/generic.903/bp/j2ee.htm,3.1.12如果不使用则禁用JSP页面缓冲区)说:

  

如果您没有使用任何需要缓冲的JSP功能,可以将其禁用以提高性能;内存不会用于创建缓冲区,输出可以直接进入浏览器。您可以使用以下指令禁用缓冲:

     

<%@ page buffer="none" %>

但是,我还没有找到任何类型的文档来指明究竟什么是“需要缓冲的JSP功能”。我通常理解在什么情况下减少或增加缓冲区可能会或可能不会有助于提高性能,但我不知道的是什么样的功能会“需要”缓冲。

在什么情况下你应该关闭缓冲,和/或在什么情况下你不应该关闭缓冲?

1 个答案:

答案 0 :(得分:1)

实际上,我只是有一个“呃”的时刻。您可以在JSP中执行操作与响应一起返回的标头,例如response.setHeader(...)<jsp:forward />。这些显然必须始终在提交响应并且数据开始流向客户端之前发生。如果您禁用了缓冲,则永远无法设置标头或使用正向标签,这可能是也可能不是,因为数据会立即开始流向客户端。我不知道为什么我不只是想到......

基本上它归结为性能是否比丢失设置标头或使用正向标签的能力更重要。如果是,您需要禁用缓冲。如果能够设置标头或使用正向标签很重要,那么您需要启用缓冲。

如果有人可以在接下来的两天内纠正我或发表更好的答案,我会乐意接受这个答案,而不是。