
Я запускаю две виртуальные машины - скажем, VM1 и VM2. Обе работают под управлением Ubuntu 16.04, а на VM2 установлен веб-сервер apache2. Теперь на сервере VM2 я скопировал код для небольшого веб-сайта.
ПРОБЛЕМА:
Из VM1 я хочу иметь возможность загружать содержимое веб-сайта, используяwget
снова и снова с заданным интервалом. Теперь он изначально отлично загружает все содержимое веб-сайта, но когда я добавил новый файл (файл .jpg
в папку веб-сайта, содержащую предыдущие файлы изображений) в папку (на веб-сайте на машине VM2), а затем я запустил команду wget на машине VM1, новый файл ненетзагрузить.
МОЯ КОМАНДА WGET:
wget --recursive --convert-links --no-check-certificate --no-cache --no-cookies http://192.168.1.44/
ЧТО Я ПОПРОБОВАЛ:
Поэтому я подумал, что этокэшированиепроблема. Но у меня уже была --no-cache
команда wget, поэтому я поискал в интернете и выполнил следующую команду на стороне сервера, чтобы очистить кэш apache2.Но все безуспешно.
решение1
Если вы добавили файл изображения JPEG, но не обновили ни один HTML-файл, включив в него ссылку (или ссылку на динамическую индексную страницу), то Wget не сможет найти файл JPEG.
Синхронизация двух наборов папок между машинами обычно выполняется с помощью таких инструментов, как rsync, robocopy и т. д., которые не имеют этой проблемы и не копируют неизмененные файлы, а потому гораздо более эффективны.
Обновлять:
Чтобы найти изменения в контенте на серверах, к которым у вас нет административного доступа, вы иногда можете использовать запрос HTTP HEAD
и проверить Last-Modified
заголовок, если он присутствует.
C:\> curl --head https://www.gnu.org/graphics/heckert_gnu.transp.small.png
HTTP/1.1 200 OK
Date: Thu, 28 Nov 2019 23:15:33 GMT
Server: Apache/2.4.7
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Last-Modified: Sat, 19 Nov 2016 18:01:39 GMT
ETag: "1dfd-541ab36d9a6c0"
Accept-Ranges: bytes
Content-Length: 7677
Cache-Control: max-age=2592000
Expires: Sat, 28 Dec 2019 23:15:33 GMT
Content-Type: image/png
Content-Language: non-html
Wget имеет несколько вариантов использования HTTP-запросов HEAD.
Для полностью статичного веб-сайта без Javascript вы можете использовать простой подход с использованием Wget и т. д. Я считаю, что такие сайты редки.
У вас всегда будут проблемы с динамически генерируемыми страницами. Вам придется загружать и анализировать HTML с сайта, чтобы определить URL-адреса, которые нужно проверить. Вам также может потребоваться выполнить Javascript.
Вы можете проверить только изменения в сгенерированном контенте, а не в исходных файлах. Как уже отмечали другие, сгенерированный контент часто имеет изменения, которые не представляют интереса, например, временные метки, время обработки и т. д.