Сохраняет ли браузер загрузку сайта с помощью Ctrl + S в Firefox во второй раз?


58

Сохраняя веб-сайт для чтения в автономном режиме с помощью Ctrl+ Sв Firefox, я замечаю, что процесс загрузки занимает несколько секунд, хотя веб-страница уже загружена.

Мне интересно, будет ли сохранение такой веб-страницы заставлять Firefox извлекать весь контент (HTML, изображения, JavaScript, CSS и т. Д.) Во второй раз или просто получит его из уже загруженных файлов в кеше.


Насколько я помню, старые Firefox перезагрузили страницу. Ответы на текущий Firefox. Так уже несколько лет.
user259412

Не могли бы вы уточнить, что вы называете «процессом загрузки»? Несмотря на то, что ресурсы, находящиеся в памяти, не следует повторно загружать из сети, браузеру по-прежнему есть, что делать, чтобы экспортировать все данные в папке, изменение ссылок и т. Д. Кроме того, если диск хранилища был приостановлен, это может занять какое-то время, чтобы разбудить его, чтобы мы могли написать ему. Но если вы говорите о панели «Библиотека»> «Загрузки», которая требует времени и показывает что-то вроде 1,2 Мбит / с, то это может быть связано с этой регрессией, которую они не считают ошибкой ...
Kaiido

4
В то время как другие пользователи уже ответили на этот вопрос удачно, учтите, что каталогизация такого поведения в любом программном обеспечении часто может оказаться бесполезной, если только разработчики программного обеспечения не предоставляют гарантию поведения. И поэтому любой ответ, помеченный как правильный, должен указывать на версию, с которой он был протестирован, а не делать общее предположение о всех будущих и прошлых версиях. Хорошо, что главный ответ уже решил эту проблему. Я знаю; придирки.
Аднан Y

Хотя это выглядит и, безусловно, является «WTF», реальность такова, что это было совершенно нормально десять лет назад, а не только с Firefox. Не спрашивай меня почему, это не имеет никакого смысла.
Деймон

Ответы:


68

Нет, это не вызывает второй запрос.

Я только что проверил это, запустив простой HTTP-сервер для регистрации запросов. Сервер не получил второй запрос при сохранении сайта.

  • Протестировано с: Firefox 61.0.1 (64-разрядная версия) в Ubuntu 18.04
  • Сервер: SimpleHTTPServer модуль python 2.7.15 ( python -m SimpleHTTPServer 7070)

Редактировать:

Комментаторы спрашивали о различном поведении, если сервер отправляет заголовки без кэширования. Я проверил это с, Pragma: No-Cacheи Cache-Control: No-Cacheрезультат остался прежним.

Код, который я использовал для теста (через этот ответ ):

#!/usr/bin/env python
import SimpleHTTPServer

class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_my_headers()

        SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)

    def send_my_headers(self):
        self.send_header("Pragma", "No-Cache")
        self.send_header("Cache-Control", "No-Cache")


if __name__ == '__main__':
    SimpleHTTPServer.test(HandlerClass=MyHTTPRequestHandler)

11

Нет, это не так.

Я только что проверил это без какого-либо кода, отключив мой компьютер от Интернета, а затем сохранив уже загруженную веб-страницу.

Это сработало. Вы можете сделать тот же тест самостоятельно.


Конечно, поведение может быть другим, если компьютер подключен к сети или отключен, но текущий топ-ответ показывает более углубленный тест. Я просто думаю, что все еще полезно иметь простой тест.


11
Существует так много комбинаций Expires, Cache-control, Pragma и, возможно, других заголовков, что «ни в одном случае» определенно не означает «никогда». Не глядя на исходный код, я бы ни на что не ставил.
Гунтрам Блум поддерживает Монику

5
@GuntramBlohm, абсолютно верно. С другой стороны, если простой тест не удался, вы можете окончательно заключить, что Ctrl-S не всегда будет работать без отправки дополнительного запроса на сервер, даже если это иногда может произойти . Таким образом, простой тест все еще имеет значение; Я был удивлен, что никто другой не упомянул об этом, поэтому я и сделал.
Wildcard

8

Сохраняет ли веб-страница, сохраняющая веб-страницу ( ctrls), весь контент во второй раз?

Это легко проверить с помощью инструментов разработчика Firefox .

  • Откройте инструменты и перейдите на вкладку «Сеть».

  • Сохранить страницу

Вы увидите, что дополнительный сетевой трафик не генерируется.


50
Я сомневаюсь, что мы можем положиться на инструменты разработчика в этом случае. Он показывает трафик только с одной вкладки, и я не думаю, что загрузка выполняется в контексте этой вкладки. Я думаю, что по вашим рассуждениям использование «сохранить как» из контекстного меню по ссылке, которую вы не посещали, должно отображаться на вкладке сети - но это не так.
Kapex

@kapex Понял. Но сохранить как по невидимой ссылке не то, что происходит в этом случае.
DavidPostill

5
@kapex Я только что отключил свое интернет-соединение и все еще смог правильно сохранить страницу ...
DavidPostill

11
Я не сомневаюсь, что он использует кеш, я просто сомневаюсь, что инструменты разработчика могут быть использованы для доказательства этого. Я ожидал бы, что и «сохранить как», и «страница сохранения» будут вести себя одинаково, но, конечно, могут быть различия. Итак, вот еще одна идея: если мы отключим кеширование в инструментах разработчика, использование ctrl + s обязательно должно появиться на вкладке сети, но опять же это не так.
Kapex

1
Вам придется использовать Панель инструментов браузера, которая показывает все сетевые запросы от браузера, включая внутренние, не привязанные к конкретной странице.
Нил


1

Возможно.

У CSS есть @mediaселектор. Это позволяет CSS использовать различные определения в зависимости от того, какое оборудование используется для отображения страницы - принтер, экраны разных размеров и т. Д.

CSS также может напрямую запрашивать файлы изображений (точечные изображения, фоновые изображения).

Теперь, если Firefox загружает только то, что нужно для текущего оборудования при отображении страницы, но загружает все при сохранении на диск, тогда у вас могут быть дополнительные запросы.

Предостережение:

Это только первая половина практически полезного ответа; вторая половина будет тестировать этот сценарий. К сожалению, у меня не хватает времени, поэтому я приму любые изменения или комментарии, если кто-то сможет сообщить повторяемые результаты теста.


Нет, все CSS-файлы загружены, только не проанализированы :)
Martijn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.