2016-12-13 31 views
0

在PHP中,有可能刷新HTML這是在這個例子中的HTML文件的標題後大多做過這樣:如何在Spring MVC中刷新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的做到這一點?如果這種做法由於某種原因而不是最佳的,那麼一定要詳細說明。

+0

我認爲你的HTML必須在一個PHP塊內打印。另一個問題是你爲什麼要顯式刷新,爲什麼不在緩衝區滿時讓Web服務器執行它? –

+0

我在觀看O'Reilly Velocity談話,使網站的載入量低於1秒。沖洗是他們使用的技術,所以我開始想知道如何在我的Spring項目中做到這一點。 https://www.youtube.com/watch?v=YV1nKLWoARQ – progonkpa

+0

我認爲你應該將這些信息放入原始問題中。如果你對Spring MVC有一點了解,你應該詢問「如何刷新標題以優化瀏覽器加載時間」。我將問題和PHP參考解釋爲一個完整的noob問題,因此是答案。 –

回答

0

我甚至不知道從哪裏開始...;)

你的PHP例如混合模型,視圖和控制器,Spring MVC中它們是不同的東西。

實際渲染髮生在視圖中,典型的JSP,或Thymeleaf的模板。該模型包含視圖的數據,並由控制器進行配置,該控制器還決定應向用戶顯示哪個視圖。

如果你只是做了PHP,你是完全新的春天,你正在尋找在相當的學習曲線。也許你應該從教程開始,如Spring boot web tutorial,然後讀一點關於MVC模式。然後問後

+0

在JSP和Thymeleaf這樣的觀點背景下提出問題會更有意義。我猜想對於JSP我會使用o.flush(); O操作。關();對於Thymeleaf,我無法找到有關沖洗的信息。 – progonkpa

+0

你不應該直接調用flush(),將它留給servlet容器。此外,我不會推薦Velocity,使用Thymeleaf,而不是更好的恕我直言。 –

+0

O'Reilly Velocity是一個信息技術會議:)。我沒有使用Velocity,目的是使用Thymeleaf。 – progonkpa

0

在Spring MVC視圖我從來不會用沖水明確一些更具體的問題,讓我來解釋爲什麼。

沖洗背後的想法是,瀏覽器將獲得的鏈接的JavaScript/CSS資源更快,因爲它可以並行解析它們,理論上有機會,該網站將加載速度更快。

較舊的Spring MVC應用程序通常會將數據加載到控制器內部的模型中。因此,除了寫入輸出流之外,視圖中沒有IO,然後在頭之後刷新沒有實際效果。 如果你有一個現代的單頁面應用程序,當加載包含JavaScript/Css鏈接的第一頁時,通常沒有或只有很少的IO,實際的數據通過REST服務作爲JSON加載,因此不需要刷新。

沖洗原因是在PHP中使用,是因爲它常常混合渲染和數據庫IO,然後它可能是有意義的沖洗。

在Tomcat上輸出緩衝區大小爲8K默認情況下,如果你可以用頭填補這個,有的身體沒有任何(顯著)IO的,也沒有必要刷新。

如果你看一下在瀏覽器的開發者工具的時間表,並有從初始化頁面請求長的空閒時間,直到資源開始加載,你可能有東西,可以通過沖洗優化。然而,它可能是我會做的最後一個優化(在資源綁定,http緩存等之後)。在Angular(2)中,甚至可以預先呈現初始頁面,因爲大型應用程序的初始化需要時間(並且再次刷新一個靜音點)。