У меня есть сервер разработки Django, на котором размещена веб-страница, на которой в реальном времени (ish) отображается информация, собранная с многочисленных серверов, за которыми я слежу.Эта веб-страница все еще находится в разработке, поэтому в настоящее время я использую встроенный веб-хост, поставляемый с Django, запущенный на хосте Ubuntu с:
python3 manage.py runserver IP:Port
В той же самой UbuntuНа хосте есть сценарий Python, который непрерывно обращается к отслеживаемым серверам и форматирует ответы в файл .html, который клиент перезагружает в течение <div>
каждую минуту.Основные функциональные возможности страницы, к которой клиент обращается, следующие:
<div id="status" style="width:100%; height: 1000"></div>
<script>
$('#status').load("{% static 'alerts/status.html' %}");
setInterval(function() {
$('#status').load("{% static 'alerts/status.html' %}");
}, 60000);
</script>
... поэтому страница загружает файл status.html
в пределах подразделения при загрузке страницы, а затем перезагружает его каждую минуту.Это прекрасно работает, однако, я заметил, просматривая журнал Django, что если status.html не изменился после десяти ответов о состоянии 304 (не изменено), время ожидания между запросами начинает сокращаться.То есть вместо того, чтобы ждать 1 минуту, он ждет 2 минуты, затем 5 минут и т. Д. (Грубо, я забыл фактическую скорость спада).
Теперь проблема, с которой я сталкиваюсьто, что мой сервер вышел из строя в выходные дни (не связано), но экран дисплея, на котором я держал веб-страницу, остался активным, поэтому он так сильно упал, что кажется полностью сломанным, отказываясь загружать последнюю версию status.html.Даже когда я заставляю Chrome перезагружать все и не использовать кеш (ctrl + R
или shift + F5
).
Я пытался исследовать этот спад, но не смог найти никакой информации о нем.Я предполагаю, что это что-то встроенное в Google Chrome (браузер, который я использую), чтобы сохранить пропускную способность, когда страница не меняется, но моя страница состояния занимает не более пары килобайт, а 304 ответа уже экономят небольшую пропускную способность, что, еслиесть способ полностью отключить этот спад для производства, который был бы идеальным.
В любом случае, любая информация о том, почему я вижу это поведение / откуда оно исходит, будет высоко ценится, поскольку я не могу найти какую-либо документацию по нему.Самая близкая вещь, которую я нашел, была из документации разработчика Google по кэшированию здесь .В нем упоминается возможность определять максимальный возраст и поведение без кэширования, поэтому я мог заставить клиента перезагружать файл status.html каждую минуту, но это кажется грязным.Хотя в моем конкретном сценарии это сработало бы, учитывая, что status.html составляет не более пары килобайт, простое отключение этого режима свертывания сделало бы уловку , а снизило бы ненужную пропускную способность.