我有一个带有9个InputText框的JSF页面和2个InputSecret框。这些框中的每一个都有一个连接到属性文件的标签,一个验证器(带有消息),并包含一个连接到命名会话范围bean的EL表达式。我正在使用Glassfish 3.1.2.1作为应用程序服务器。如果我将project_stage设置为Development,则在加载或刷新此页面时会看到明显的闪烁。它发生得非常快,但看起来好像在加载页面之前背景(正文)被清除为白色。如果我将项目阶段设置为Production,我看不到闪光灯。什么是Project_Stage开发,这会导致这种行为?
答案 0 :(得分:2)
当从HTTP响应接收的第一个字节和最后一个字节之间需要一些时间时,这是浏览器特定的行为。有些浏览器在收到第一个字节时会消隐,并在收到最后一个字节时完整地显示新页面。人眼的帧速率约为25fps(电视使用时)。任何比这更快的东西都不会被人类注意到。但是任何比这更慢的东西都会导致遮挡变得可见。
开发阶段会导致某些部分不被缓存,以便源文件中的最新更改立即可见,例如Facelets源文件。它们都是根据请求重新编译和重新解析的。所有这些都会导致页面加载时间延长一段时间,因此当浏览器显示超过大约1/25秒时,浏览器消隐很快就会显示。
您可能需要考虑将web.xml
中的Facelets缓冲区大小增加到大约最大HTML输出的大小,以便响应一次性发送而不是部分发送,这可能需要更多预先处理时间。
E.g。 64KB:
<context-param>
<param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
<param-value>65535</param-value> <!-- 64KB -->
</context-param>