У меня есть веб-служба, где любой пользователь может запустить процесс, который занимает от 15 секунд до 10 минут. Процесс запускается с запросом POST, и пользователь перенаправляется на страницу, показывающую текущий ход процесса (например, https://example.com/progress-status/123
).HTTP: опрос веб-страниц без JavaScript?
Моей текущей реализацией является передача HTTP-заголовка Refresh
со значением n;url=https://example.com/progress-status/123
, где n
автоматически изменяется от 5 до 120 в соответствии с ожидаемым временем до завершения и текущей загрузкой сервера. В результате статус прогресса автоматически обновляется каждые 5 секунд или более. После того, как прогресс будет завершен, страница состояния немедленно перенаправит (HTTP 301 и заголовок Location
) на завершенную работу.
Это хорошо работает, но вызывает уродливое мерцание в Opera 42.0, которое считает, что это означает вынужденную перезагрузку и пропустить все кеши. Я отправляю правильные заголовки Cache-Control
, поэтому использование кэшированного результата для всего будет хорошо, но заголовок Refresh
заставляет игнорировать все кеши. (Страница состояния содержит некоторые изображения и ссылки на статические файлы CSS, поэтому нет смысла обновлять эти ресурсы для каждого запроса опроса.)
Есть ли способ реализовать опрос только HTML-страницы без JavaScript? Я знаю, что могу опросить только текущий статус с помощью запроса Ajax, а затем обновить часть отображаемой в данный момент страницы с обновленной информацией. Однако это не будет работать, если пользователь отключит JavaScript. Остальная часть сервиса работает без JavaScript, поэтому JavaScript требует чего-то такого простого, кажется, плохого. (У меня уже есть кнопка отправки GET на странице состояния выполнения, чтобы принудительно обновить вручную.)
Я знаю, что заголовок HTTP Refresh
не определен в HTTP 1.0 или HTTP 1.1, так что это немного серая область. Я ищу что-то, что работает в реальном мире без JavaScript.
Протокол HTTP является лицом без гражданства в соответствии с проектом. Поэтому, если вы не можете использовать javascript для этого, я боюсь, что вам придется жить с ним, потому что в протоколе вам нечего предложить. Кроме того, я считаю совершенно нормальным, что пользовательский интерфейс ухудшается, если javascript отключен. И я подчеркиваю слово ** ухудшение **, которое отличается от слова ** break **. –
Имеет ли opera такое же поведение с элементом '' в голове, как против заголовка? - Страница с голыми костями всегда может быть доставлена через IFRAME. –