Делает ли сохранение веб-страницы с помощью Ctrl + S в Firefox браузером во второй раз?

7342
4253wyerg4e

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

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

58
Насколько я помню, старые Firefox перезагрузили страницу. Ответы на текущий Firefox. Так уже несколько лет. peterh 6 лет назад 0
Не могли бы вы уточнить, что вы называете «процессом загрузки»? Даже если ресурсы, находящиеся в памяти, не следует повторно загружать из сети, браузеру по-прежнему есть, что делать, чтобы экспортировать все данные в папке, изменение ссылок и т. Д. Кроме того, если диск хранилища был приостановлен, это может занять какое-то время, чтобы просто разбудить его, чтобы мы могли написать ему. Но если вы говорите о том, что панель «Библиотека»> «Загрузки» требует времени и показывает что-то вроде 1,2 Мбит / с, то это может быть связано с [этой регрессией] (https://bugzilla.mozilla.org/show_bug.cgi?id=1425208). не считаю ошибкой ... Kaiido 6 лет назад 0
В то время как другие пользователи уже ответили на этот вопрос удачно, учтите, что каталогизация такого поведения в любом программном обеспечении часто может оказаться тщетной, если только разработчики программного обеспечения не предоставляют гарантию поведения. И поэтому любой ответ, помеченный как правильный, должен указывать на версию, с которой он был протестирован, а не делать общее предположение о всех будущих и прошлых версиях. Хорошо, что главный ответ уже решил эту проблему. Я знаю; придирки. Adnan Y 6 лет назад 4
Хотя это выглядит и, безусловно, является «WTF», реальность такова, что это было совершенно нормально десять лет назад, а не только с Firefox. Не спрашивай меня почему, это не имеет никакого смысла. Damon 6 лет назад 0

5 ответов на вопрос

68
McFarlane

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

Я только что проверил это, запустив простой 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
Wildcard

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

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

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


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

Существует так много комбинаций Expires, Cache-control, Pragma и, возможно, других заголовков, что «ни в одном случае» определенно не означает «никогда». Не глядя на исходный код, я бы ни на что не ставил. Guntram Blohm 6 лет назад 11
@GuntramBlohm, абсолютно верно. С другой стороны, если простой тест * не удался, * тогда вы можете окончательно заключить, что Ctrl-S не будет * всегда * работать без отправки дополнительного запроса на сервер, даже если он может * иногда * делать это. Таким образом, простой тест все еще имеет значение; Я был удивлен, что никто другой не упомянул об этом, поэтому я и сделал. Wildcard 6 лет назад 5
8
DavidPostill

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

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

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

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

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

Я сомневаюсь, что мы можем положиться на инструменты разработчика в этом случае. Он показывает только трафик с одной вкладки, и я не думаю, что загрузка выполняется в контексте этой вкладки. Я думаю, что по вашим рассуждениям использование «сохранить как» из контекстного меню по ссылке, которую вы не посещали, должно отображаться на вкладке сети - но это не так. kapex 6 лет назад 50
@kapex Понятно. Но сохранить как по невидимой ссылке не то, что происходит в этом случае. DavidPostill 6 лет назад 0
@kapex Я просто отключил свое интернет-соединение и все еще смог правильно сохранить страницу ... DavidPostill 6 лет назад 5
Я не сомневаюсь, что он использует кеш, я просто сомневаюсь, что инструменты разработчика могут быть использованы для доказательства этого. Я ожидал бы, что и «сохранить как», и «страница сохранения» будут вести себя одинаково, но, конечно, могут быть различия. Итак, вот еще одна идея: если мы отключим кеширование в инструментах разработчика, использование ctrl + s обязательно должно появиться на вкладке сети, но опять же это не так. kapex 6 лет назад 11
Вам придется использовать Панель инструментов браузера, которая показывает все сетевые запросы от браузера, включая внутренние, не привязанные к конкретной странице. Neil 6 лет назад 1
Лучший способ проверить это - использовать fiddler, перехватывая всю сетевую активность ... Laurent S. 6 лет назад 0
2
wdkmaaeo

В отличие от других ответов, Firefox 59.0 второй раз загружает (в моем тестировании) изображения, но не файлы HTML.

Я загрузил произвольное изображение ( https://cdn.shopify.com/s/files/1/1613/3867/products/GS_cat_feeding_reminder_forget_someone.png?v=1520745318 ) и использовал ctrl+ sдля его сохранения.

1
toolforger

Возможно.

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

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

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

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

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

Нет, все файлы CSS загружаются, просто не анализируются :) Martijn 6 лет назад 0