如何在Spring MVC中刷新HTML?

时间:2016-12-13 14:52:49

标签: spring spring-mvc flush

在PHP中,可以刷新HTML,这主要是在HTML文件的标题之后完成的,如下例所示:

<html>
<head>
  <title>Flush Example Page</title>
  <link rel="styles.css" href="my.css" />
  <script src="script.js"></script>
</head>
<?php ob_flush(); ?>
<?php flush(); ?>
<body>...

你如何使用Spring MVC做到这一点?如果这种做法出于某种原因不是最佳的,那么,请详细说明。

2 个答案:

答案 0 :(得分:0)

我甚至不知道从哪里开始...;)

你的PHP示例混合了模型,视图和控制器,在Spring MVC中它们是分开的东西。

实际渲染发生在视图中,通常是JSP或Thymeleaf模板。该模型包含视图的数据,并由Controller配置,该控制器还决定应向用户显示哪个视图。

如果您只完成了PHP,而且您对Spring完全陌生,那么您正在寻找相当的学习曲线。也许你应该从一个教程开始,比如Spring boot web tutorial,然后阅读一些关于MVC模式的内容。然后再问一些更具体的问题

答案 1 :(得分:0)

我永远不会在Spring MVC视图中显式使用flush,让我解释原因。

刷新背后的想法是浏览器将更快地获得javascript / css资源的链接,并且因为它可以并行解析它们,所以理论上有可能网站加载速度更快。

较旧的Spring MVC应用程序通常会将数据加载到控制器内的模型中。因此除了写入输出流之外,视图中没有IO,然后在标题之后刷新没有实际效果。 如果你有一个现代的单页面应用程序,加载包含JavaScript / Css链接的第一个页面时通常没有或只有很少的IO,实际的数据通过REST服务作为JSON加载,所以再次不需要刷新。

在PHP中使用刷新的原因是因为它经常混合渲染和数据库IO,然后冲洗可能是有意义的。

在Tomcat上,输出缓冲区大小默认为8K,如果你可以用标题填充它,而某些正文没有任何(重要)IO,则不需要刷新。

如果您查看浏览器开发人员工具中的时间线,并且从初始页面请求开始有很长的空闲时间,直到资源开始加载,您可能会有一些可以通过刷新进行优化的内容。然而,它可能是我将要进行的最后一次优化(在资源捆绑,http缓存之后等)。在Angular(2)中,您甚至可以预渲染初始页面,因为大型应用程序的初始化需要时间(并且再次刷新一个静音点。)