2016-12-13 4 views
0

В PHP, можно промывать HTML, который делается в основном после того, как заголовки в HTML-файл, как в этом примере:Как очистить HTML в Spring MVC?

<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-блока для печати. Другой вопрос - почему вы хотите явно скрывать, почему бы просто не позволить веб-серверу делать это, когда буфер заполнен? –

+0

Я наблюдал за этим разговором O'Reilly Velocity, чтобы сделать загрузку сайтов ниже 1 с. Flushing - это техника, которую они используют, поэтому я начал задаваться вопросом, как это сделать в моих проектах Spring. https://www.youtube.com/watch?v=YV1nKLWoARQ – progonkpa

+0

Думаю, вы должны были поместить эту информацию в исходный вопрос. Если вы немного знали о Spring MVC, вы должны были спросить о том, как «очистить заголовки, чтобы оптимизировать время загрузки браузера». Я интерпретировал вопрос и ссылку на PHP как полный вопрос о нобе, следовательно, ответ. –

ответ

0

Я даже не знаю, с чего начать ...;)

Ваш PHP пример смешивает модель, представление и контроллер, в Spring MVC они разные вещи.

Фактический рендеринг выполняется в виде, как правило, JSP или шаблонов Thymeleaf. Модель содержит данные для представления и настраивается контроллером, который также решает, какое представление должно быть показано пользователю.

Если вы только сделали PHP, и вы совершенно новичок в Spring, вы смотрите на довольно кривую обучения. Возможно, вам стоит начать с учебника, например Spring boot web tutorial, а затем немного почитать о шаблоне MVC. И затем задайте более конкретные вопросы позже

+0

Было бы разумнее поставить вопрос в контексте взглядов, например, JSP и Thymeleaf. Думаю, для JSP я бы использовал o.flush(); о.Закрыть(); Однако для Тимелеафа мне не удалось найти информацию о промывке. – progonkpa

+0

вы никогда не должны вызывать flush() явно, оставьте это в контейнере сервлета. Также я бы не рекомендовал Velocity, вместо этого используйте Thymeleaf, намного лучше IMHO. –

+0

O'Reilly Velocity - конференция по информационным технологиям :). Я не использовал Velocity, намерение использовать Thymeleaf. – progonkpa

0

Я бы никогда не использовал флеш явно в представлении Spring MVC, позвольте мне объяснить, почему.

Идея промывки заключается в том, что браузер быстрее получит ссылки на ресурсы javascript/css, и поскольку он может анализировать их параллельно, есть теоретическая вероятность того, что сайт будет загружаться быстрее.

Старое приложение Spring MVC обычно загружает данные в модель внутри контроллера. Таким образом, в представлении нет ввода-вывода, кроме записи в выходной поток, а затем промывки после того, как заголовок не имеет фактического эффекта. Если у вас есть современное одностраничное приложение, то обычно при загрузке первой страницы, содержащей ссылки JavaScript/Css, фактические данные загружаются через службы REST как JSON, поэтому нет необходимости в потоке.

Причина, по которой промывка используется в PHP, заключается в том, что она часто смешивает рендеринг и базу данных ввода-вывода, а затем может иметь смысл смывать.

На Tomcat размер выходного буфера по умолчанию равен 8K, если вы можете заполнить его заголовками, а часть тела без какого-либо (значительного) ввода-вывода, нет необходимости скрывать.

Если вы просматриваете временную шкалу в инструментах разработчика браузера, и существует большой период простоя от выполнения первоначального запроса страницы, пока ресурсы не начнут загружаться, у вас может быть что-то, что можно оптимизировать путем промывки. Однако это, вероятно, последняя оптимизация, которую я бы сделал (после объединения ресурсов, кэширования http и т. Д.). В Angular (2) вы даже можете предварительно подготовить исходную страницу, потому что инициализация больших приложений требует времени (и повторная промывка минута).

 Смежные вопросы

  • Нет связанных вопросов^_^