Чи зберігає веб-сторінку за допомогою Ctrl + S у Firefox браузер вдруге завантажує сайт?


58

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

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


Як я пам’ятаю, старі файфокси перезавантажували сторінку. Відповіді - для поточного Firefox. Це так з кількох років.
користувач259412

Чи можете ви пояснити, що ви називаєте "процесом завантаження"? Незважаючи на те, що ресурси, що знаходяться в пам'яті, не слід повторно завантажувати з мережі, у браузері все-таки потрібно зробити експорт усіх даних у папку + зміна посилань тощо. Також, якщо диск для зберігання був призупинений, це може зайняти якийсь час просто, щоб прокинутись, щоб ми могли це написати. Але якщо ви говорите про панель «Бібліотека> завантаження», яка займає час і показує щось на кшталт 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, кеш-контролю, прагми та, можливо, інших заголовків, що "не в цьому єдиному випадку", звичайно, не означає "ніколи". Не дивлячись на вихідний код, я ні на що не став би робити ставку.
Гунтрам Блом

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

8

Чи збереження веб-сторінки ( ctrls) змушує Firefox отримувати весь вміст вдруге?

Це легко перевірити за допомогою інструментів для розробників Firefox .

  • Відкрийте інструменти та натисніть вкладку «Мережа».

  • Збережіть сторінку

Ви побачите, що додаткового мережевого трафіку не генерується.


50
Сумніваюсь, що ми можемо в цьому випадку покластися на інструменти для розробників. Він показує лише трафік з однієї вкладки, і я не думаю, що завантаження працює в контексті цієї вкладки. Я думаю, що ваші міркування щодо використання "зберегти як" у контекстному меню на посиланні, яке ви не відвідували, повинні відображатися на вкладці мережі - але це не так.
капекс

@kapex Зрозумів. Але зберегти як на невідомій посилання - це не те, що відбувається в цьому випадку.
DavidPostill

5
@kapex Я просто відключив підключення до Інтернету і все ще зміг правильно зберегти сторінку ...
DavidPostill

11
Я не сумніваюся, що він використовує кеш, я просто сумніваюся, що інструменти для розробників можуть бути використані для підтвердження цього. Я би очікував, що і "save as", і "save page" поводяться однаково, але, звичайно, можуть бути відмінності. Отже, ось ще одна ідея: якщо ми відключимо кешування в інструментах розробника, використання ctrl + s неодмінно повинно з’являтися на вкладці мережі, але знову ж таки це не відбувається.
капекс

1
Вам доведеться використовувати панель інструментів браузера, в якій відображаються всі мережеві запити браузера, включаючи внутрішні, не прив’язані до певної сторінки.
Ніл


1

Можливо.

У CSS є @mediaселектор. Це дозволяє CSS використовувати різні визначення залежно від того, який апарат використовується для відображення сторінки - принтер, екрани різного розміру тощо.

CSS також може безпосередньо запитувати файли зображень (зображення кулі, фонові зображення).

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

Caveat:

Це лише перша половина практично корисної відповіді; друга половина перевірятиме цей сценарій. На жаль, у мене не вистачає часу, тому я прийму будь-які зміни та коментарі, якщо хтось може повідомити про результати повторення.


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