Разве Safari не кэширует страницы?

Всякий раз, когда я возвращаюсь назад или вперед в истории навигации Safari, он перезагружает страницы, даже если я только что посетил страницу две секунды назад.

При навигации с помощью кнопок «назад/вперед» или пролистывании вперед и назад приложение всегда перезагружает страницу из Интернета.

Могу ли я что-нибудь изменить, чтобы Safari кэшировал страницы, которые я только что посетил, более агрессивно?

По умолчанию да, Safari кэширует страницы. Когда вы говорите, что он перезагружает страницы, что вы имеете в виду? Вы уверены, что все данные снова извлекаются из Интернета? Возможно, то, что вы считаете перезагрузкой, может быть просто перерисовкой страницы браузером.
@tubedogg Синий индикатор выполнения в поле URL показывает прогресс повторной загрузки страницы. Если я отключу Wi-Fi, просто чтобы проверить, что он снова загружается, он показывает пустую страницу вместо контента, потому что он не может снова загрузить контент, а заголовок вкладки меняется на «проблемы со страницей».

Ответы (3)

Ответ — нет, Safari не кэширует страницы — однако он кэширует элементы, из которых состоит страница, когда правила, которые веб-сервер связывает с каждым элементом, разрешают кэширование.

Вы можете увидеть это на своих конкретных страницах, включив меню «Разработка» в настройках Safari:

введите описание изображения здесь

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

Если вы хотите кэшировать контент для чтения в автономном режиме, используйте функцию «Список для чтения», чтобы сохранить страницу для использования в автономном режиме. Это позволяет более агрессивно кэшировать большую часть большинства страниц, чтобы разрешить чтение страницы в автономном режиме позже. В вашем случае, когда Safari находится в сети, он проверит, актуальна ли версия списка для чтения на странице, поэтому это может быть не совсем то, что вы ищете.

Я не хочу читать в автономном режиме, просто меня беспокоит, что Safari перезагружает страницу, которую я только что посетил.
Конечно, не используйте список для чтения, если это не то, что вам нужно — я надеялся, что объяснение того, как работает кэширование в Safari, все же может вам помочь.

Вариант 1: несовместимость с расширениями Safari

У вас есть расширения в Safari?

У меня лично тоже была эта проблема. Чтобы исправить это, я отключил все свои расширения, и мне стало ясно, что AdBlock вызывает это у меня. Я отключил его сейчас, и он больше не перезагружается при возвращении.

Для тех, у кого нет расширений:

Вариант 2. Добавление NoPageCache

Со страницы обсуждения Apple:

  1. Я скачал NoPageCache отсюда
  2. Я закрыл Safari и снова открыл его.
  3. Я попробовал приложение, и оно все еще перезагружало страницы.
  4. Я отключил и удалил из сафари приложение (настройки/расширения)
  5. Удивительно, но страницы больше не перезагружаются.

Ресурсы

Страница обсуждения Apple

Многие форумы, такие как этот , показывают, что это ошибка в Mountain Lion. Многие люди подали жалобы, но Apple пока ничего не сделала.

Синий индикатор выполнения представляет собой комбинацию связи с сервером, загрузки данных и рисования (рендеринга) страницы в окне. Если вы нажмете «Назад», в зависимости от скорости вашего соединения, задержки соединения, скорости системы и множества других факторов (сколько происходит в фоновом режиме, сколько у вас свободной оперативной памяти и т. д.) может потребоваться некоторое время для перезагрузки страницы. в окне, но это не обязательно означает повторную загрузку всех данных.

Отключение Wi-Fi (или любого интернет-соединения) и попытка перейти по URL-адресу ВСЕГДА будут терпеть неудачу, потому что он не может выполнить начальные шаги, чтобы определить, какую страницу загружать (не может подключиться к DNS-серверу). Независимо от того, загрузит ли Safari в конечном итоге страницу снова, он всегда будет сначала подключаться к серверу веб-сайта, чтобы определить, изменилась ли страница с момента последнего посещения.

Вы можете проверить, кэширует ли Safari, выполнив следующие действия:

  1. Перейдите в меню Safari > «Настройки».
  2. Нажмите на вкладку «Дополнительно».
  3. Установите флажок «Показать меню «Разработка» в строке меню».
  4. Закройте окно настроек.
  5. Загрузите эту веб-страницу: http://trakt.tv/user/tubedogg. Когда он полностью загрузится, щелкните Reload the current pageв адресной строке.
  6. Нажмите + + I, чтобы включить Web Inspector.
  7. Нажмите control+ 1, чтобы показать Resourcesвкладку.
  8. Щелкните треугольник раскрытия рядом с Images.
  9. В правом окне просмотрите Request & Responseраздел. (Возможно, вам придется прокрутить вниз, чтобы увидеть это.) Проверьте, Cachedнаписано ли «Да» или «Нет ».

Safari Web Inspector с выделенным запросом и ответом

Обратите внимание, что не все изображения могут кэшироваться в зависимости от инструкций сервера. Например, некоторые объявления говорят вашему браузеру не кэшировать их. Но если вы просмотрите многие или все изображения на странице, на большинстве из них должно быть написано «Да» для Cached. Это определит, правильно ли кэширует Safari.