На какое время кэшируются результаты dns запросов
Целью кэширования является временное хранение данных в расположении, которое приводит к повышению производительности и надежности запросов данных. Кэширование DNS включает в себя хранение данных ближе к запрашивающему клиенту, так что разрешение DNS запроса и дополнительных запросов можно избежать, тем самым ускоряя время загрузки и снижения пропускную способность/потребление процессора. Данные DNS могут кэшироваться в различных расположениях, каждое из которых будет хранить записи DNS в течение определенного периода времени.
Кэширование браузера
Современные браузеры по умолчанию предназначены для кэширования записей DNS в течение определенного периода времени. Цель здесь очевидна, чем ближе кэширование происходит к браузеру, тем меньше шагов обработки должно быть пройдено, чтобы проверить кэш и сделать правильные запросы к IP-адресу. При запросе записи кэш браузера является первым, что проверяется для запрошенной записи.
Кэширование DNS на уровне операционной системы
Резолвер DNS уровня операционной системы является второй и последней локальной остановкой перед тем, как DNS-запрос выполнится. Процесс в операционной системе, предназначенный для обработки этого запроса, обычно называется "stub resolver" или DNS-клиентом. Когда stub resolver получает запрос от приложения, он сначала проверяет свой собственный кэш, чтобы узнать, есть ли у него запись. Если нет, тогда передает запрос DNS (с рекурсивным набором) вне локальной сети к рекурсивному распознавателю DNS в ISP.
Рекурсивное кэширование DNS резолвера
Когда рекурсивный резолвер в ISP получает запрос DNS, он также проверяет хранится ли запрошенное преобразование хоста в IP-адрес на локальном уровне.
Рекурсивный резолвер также имеет дополнительные функциональные возможности, в зависимости от типов записей в кэше.
Если резолвер не имеет записей NS, он отправит запрос серверам TLD, пропуская корневой сервер.
В маловероятном случае, если резолвер не имеет записей, указывающих на серверы TLD, он будет запрашивать корневые серверы. Это событие обычно происходит после очистки кэша DNS.
Что такое резолвер DNS?
Резолвер DNS является первой ступенью при поиске DNS и отвечает за работу с клиентом, который сделал первоначальный запрос. Резолвер запускает последовательность запросов, которые в конечном итоге приводят к преобразованию URL-адреса в необходимый IP-адрес.
Примечание: типичный некэшированный поиск DNS будет включать и рекурсивные и итеративные запросы.
Важно различать рекурсивный DNS-запрос и рекурсивный DNS-резолвер. Запрос относится к запросу разрешения имен DNS, требующий разрешения. Рекурсивный резолвер DNS - это компьютер, который принимает рекурсивный запрос и обрабатывает ответ, делая необходимые запросы.
Клиент Android сообщил о большом количестве исключений UnknownHostException, которые привлекли всеобщее внимание, поэтому я решил изучить его более подробно.
Что такое UnknownHostException? Перейдем к тому, что говорит исходный код Google:
Оказывается, это исключение будет выдано, когда имя домена не может быть разрешено. Тогда я сначала получу общее представление о том, как выполняется разрешение доменного имени на клиенте.
Кеш DNS ОС
Кэш ОС будет ссылаться на значение TTL ответа DNS-сервера, но оно не полностью равно значению TTL.。
Протестируйте, возьмите в качестве примера разрешение DNS Zhihu:
Получите время TTL в службе доменных имен провайдера с помощью команды разрешения доменного имени:
Вы можете видеть, что время кеширования на локальном сервере ISP составляет 15 минут, даже если он обновляется.Местное управлениеСистемный кеш все еще существует у провайдера.
3. Сравнение двух:
- Во-первых, по точности Etag лучше Last-Modified.
Единица времени Last-Modified - секунды. Если файл изменяется несколько раз в течение 1 секунды, то их Last-Modified фактически не отражает изменение, но Etag будет изменяться каждый раз для обеспечения точности; если это сервер с балансировкой нагрузки, Last-Modified, сгенерированный каждым сервером, также может быть несовместимым.
- Во-вторых, с точки зрения производительности Etag уступает Last-Modified.В конце концов, Last-Modified требуется только для записи времени, в то время как Etag требует, чтобы сервер вычислял хеш-значение с помощью алгоритма.
- В-третьих, с точки зрения приоритета, проверка сервера отдает приоритет Etag.
Пять, кеш переговоров
Кэширование согласования - это процесс, в котором браузер передает идентификатор кеша для инициирования запроса к серверу после того, как кеш принудительно аннулируется, и сервер решает, использовать ли кеш в соответствии с идентификатором кеша. В основном существуют следующие две ситуации:
Кэш согласования вступает в силу, возвращается 304 и не изменено
Аннулирование кэша переговоров, возврат 200 и результат запроса
текст
1.Expires
Windows
Время установки кэша DNS до Windows 2003 находится в реестре. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Dnscache/Parameters
Имя ключа - MaxCacheEntryTtlLimit, что соответствует максимальному сроку жизни записей кэша DNS. В системах XP и 2003 имя этого элемента - MaxCacheTtl.
Подробно объясняет взаимосвязь между TTL домена DNS и стратегией кэширования DNS операционной системы:
В системе Windows можно использовать следующие команды:
1.Last-Modified и If-Modified-Since
Когда браузер обращается к ресурсу в первый раз, когда сервер возвращает ресурс, он добавляет заголовок Last-Modified в заголовок ответа. Значение представляет собой время последнего изменения ресурса на сервере. Браузер кэширует файл и заголовок после его получения;
В следующий раз, когда браузер запрашивает этот ресурс, браузер обнаруживает заголовок Last-Modified, поэтому он добавляет заголовок If-Modified-Since, значением является значение в Last-Modified; сервер снова получает этот запрос ресурса и будет следовать If- Значение в Modified-Since сравнивается со временем последней модификации ресурса на сервере. Если изменений нет, возвращается 304 и пустое тело ответа, которое считывается непосредственно из кеша. Если время If- Modified-Since меньше, чем время последней модификации ресурса на сервере. Время модификации, указывающее, что файл был обновлен, поэтому верните новый файл ресурса и 200
Но у Last-Modified есть и недостатки:
Введение в кеширование DNS в каждой ссылке
3. Сравнение Expires и Cache-Control
Связанные с DNS команды для других систем
MAC
Linux
Браузер, время кеширования DNS операционной системы
1. Часто меняющиеся ресурсы
Для часто меняющихся ресурсов сначала необходимо использовать Cache-Control: no-cache Заставьте браузер каждый раз запрашивать сервер, а затем взаимодействуйте с ETag или Last-Modified, чтобы проверить, действителен ли ресурс. Хотя этот подход не может сэкономить количество запросов, он может значительно уменьшить размер данных ответа.
Кеш DNS браузера
Время кеширования DNS браузера не имеет ничего общего со значением TTL, возвращаемым DNS-сервером.。
После получения фактического IP-адреса доменного имени веб-сайта браузер кэширует его IP-адрес, чтобы уменьшить потерю сетевых запросов. Каждый браузер имеет фиксированное время кеширования DNS. Срок действия Chrome составляет 1 минуту, и DNS больше не будет запрашиваться в течение этого периода. Браузеру Chrome удобнее видеть собственное время кеширования DNS, введите его в адресную строку
Вы можете увидеть кеш браузера
Три, анализ процесса кеширования
Из рисунка выше мы можем знать:
Каждый раз, когда браузер инициирует запрос, он сначала ищет результат запроса и идентификатор кеша в кеше браузера.
Каждый раз, когда браузер получает результат возвращенного запроса, он сохраняет результат и идентификатор кеша в кеше браузера.
8. Влияние поведения пользователя на кеш браузера.
Так называемое влияние поведения пользователя на кеширование браузера относится к тому, какая стратегия кэширования запускается, когда пользователь управляет браузером. Выделяют три основных типа:
- Откройте веб-страницу и введите адрес в адресной строке: Найдите совпадение в кеше диска. Используйте, если есть; если нет, отправьте сетевой запрос.
- Нормальное обновление (F5): поскольку ВКЛАДКА не закрыта, кеш памяти доступен и будет использоваться первым (если он совпадает). Второй - это дисковый кеш.
- Принудительное обновление (Ctrl + F5): браузер не использует кеш, поэтому все отправленные заголовки запросов Cache-control: no-cache (Для совместимости также принесите Pragma: no-cache ), сервер напрямую возвращает 200 и самое последнее содержимое.
Тип ответа на запрос
Прямой ответ: прямой ответ содержит записи ресурсов, соответствующие запросу синтаксического анализа клиента;
Эталонный ответ: эталонный ответ используется только тогда, когда DNS-сервер работает в итеративном режиме, и содержит другую информацию, которая помогает клиенту разрешить запрос. Например, если DNS-сервер не может найти соответствующее значение для запроса разрешения, инициированного клиентом, он отправит ссылочный ответ DNS-клиенту, сообщая ему, что он поможет разрешить запрос;
(1) Полномочный DNS-сервер сообщает, что имя, запрошенное клиентом, не существует;
(2) Авторитетный DNS-сервер сообщает, что соответствующее имя существует, но нет записи ресурса указанного типа.
Независимо от того, положительный или отрицательный ответ, DNS-клиент сохраняет результат в своем локальном кэше.
DNS TTL означает время жизни, то есть время жизни.。
Седьмая, реальная стратегия кэширования приложения сцены
1.Service Worker
Service Worker реализует функцию кэширования, которая обычно делится на три этапа: во-первых, вам нужно зарегистрировать Service Worker, а затем вы можете кэшировать необходимые файлы после прослушивания события установки, затем при следующем посещении пользователя вы можете проверить, есть ли там является кешем путем перехвата запроса., Если есть кеш, вы можете прочитать файл кеша напрямую, в противном случае вы можете запросить данные.
Когда Service Worker не попадает в кеш, нам нужно вызвать функцию выборки, чтобы получить данные. Другими словами, если мы не попали в кеш в Service Worker, мы будем искать данные в соответствии с приоритетом поиска в кеше. Но независимо от того, получаем ли мы данные из кэша памяти или из сетевого запроса, браузер покажет, что мы получаем контент от Service Worker.
В-четвертых, сильный кеш
оглавление
Резюме:
Изменение времени кеширования
1) Уровень виртуальной машины
Единица измерения параметра - секунды, 0 означает отсутствие кеша, -1 означает постоянный кеш (используйте с осторожностью).
2) Слой кадра
К сожалению, срок действия кэша уровня инфраструктуры изменить нельзя. Взглянем на AddressCache.java:
Успешные запросы кэшируются в течение 10 минут, а неудачные запросы кэшируются в течение 10 секунд.
Такой дизайн несколько бесчеловечен и вызовет большое количество исключений UnknownHostExceptions в сценариях с интенсивным доступом к интерфейсу. Предполагается, что Google также осведомлен об этой проблеме. После версии 4.2 время кеширования для успеха и сбоя уровня фреймворка стало 2 секунды.
Кеш DNS провайдера
Кэширование ISP (оператора связи) в некоторой степени ненадежно, и некоторые кэширующие серверы (не многие) будут игнорировать TTL, предоставляемый DNS веб-сайта, и сами устанавливают более длинный TTL, что приводит к невозможности получения нового IP-адреса вовремя при обновлении DNS верхнего уровня.
Видно, что в процессе запроса разрешения доменного имени из корневого DNS существует слишком много уровней, которые влияют на получение DNS. Кэширование - это палка о двух концах, которая улучшает скорость получения DNS, а также влияет на то, что DNS не может обновляться вовремя при изменении IP. до настоящего времени.
Кэширование можно назвать простым и эффективным методом оптимизации производительности. Отличная стратегия кэширования может сократить расстояние до ресурсов запроса веб-страницы, уменьшить задержку, а поскольку кэшированные файлы можно повторно использовать, она также может снизить пропускную способность и снизить нагрузку на сеть.
Для запроса данных его можно разделить на три этапа: инициирование сетевого запроса, внутренняя обработка и ответ браузера. Кэширование браузера может помочь нам оптимизировать производительность на первом и третьем шагах. Например, если кеш используется напрямую, без инициирования запроса, или если запрос инициирован, но данные, хранящиеся в бэкэнде, согласуются с передним концом, то нет необходимости отправлять данные обратно, тем самым уменьшая данные ответа. .
В следующем материале мы рассмотрим механизм кэширования браузера через местоположение кеширования, стратегию кэширования и фактическую стратегию кэширования приложений сценария.
Если вы хотите получить интеллект-карту или прочитать больше качественных статей, пожалуйста, ткнитеБлог GitHub
Кеш Java DNS
Срок действия кеша можно установить прямо в приложении:
Измените настройки в файле безопасности в jre
3.Disk Cache
Дисковый кэш - это кэш, хранящийся на жестком диске. Скорость чтения ниже, но все может быть сохранено на диске.По сравнению с кешем памяти он лучше по емкости и своевременности хранения.。
Какие файлы закроет браузер в память? Что закинуто на жесткий диск?
Есть разные мнения по этому поводу, но следующие мнения более надежны:
- Для больших файлов большая вероятность не сохраняется в памяти, и наоборот.
- Если текущее использование системной памяти велико, файлы сначала будут сохранены на жестком диске.
Справочная статья
Классификация кеша:
Клиент:
Цель кеширования браузера - ускорить доступ к различным статическим ресурсам. Для статических ресурсов браузер не кэширует html-страницу, поэтому каждый раз, когда вы меняете html-страницу, html вступает в силу сразу после завершения изменения. Нет проблем, что кеш приводит к неправильной странице. Браузер кеширует изображения, CSS и js. Эти ресурсы будут вызывать кэшированный контент браузера при вызове до того, как кеш станет недействительным.
Сервер:
делится на кеш прокси-сервера и кеш обратного прокси-сервера (также называемый кешем шлюза, например обратный прокси-сервер Nginx, Squid и т. д.). Фактически, широко используемый CDN также является сервером. -side cache. Цель состоит в том, чтобы заставить пользовательские запросы использовать "ярлыки", и все они кэшируют статические ресурсы, такие как изображения и файлы.
Кеш браузера:
Тест знает, в чем преимущество после понимания: интерфейсный дисплей - это не последняя страница, вы можете анализировать и судить самостоятельно, без необходимости каждый раз чистить кеш.
Цель кеширования браузера:
Первое: избегайте частых запросов и экономьте трафик.
Второй: ускорить доступ пользователя к веб-страницам.
Третье. Уменьшите нагрузку на сервер.
Процесс кеширования браузера:
1. Просмотрите кеш
Определите, есть ли кеш:
Прежде всего, мы должны понять, как хранить его где:
Браузер Chrome (старая версия):
chrome://chrome-urls/ Войдите в Google Chrome и нажмите на ссылку кеширования
Браузер Firefox about:cache?storage=disk
Локальный кеш браузера Chrome обычно хранится здесь:
C: \ Users \ Username \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Cache
, как показано ниже:
Это непросто понять, установите профессиональные инструменты Chrome cache View инструмент:
2. Оценка кеш-памяти
A. Срок действия кеша не истек, прочтите данные напрямую
Возьмем, к примеру, Baidu:
Откройте Baidu, отфильтруйте bd_logo, как показано на рисунке ниже, первый запрос в основном состоит из 200 кодов возврата, потому что кеша нет.
Снова обновите и верните 200, показывая, что кеш прочитан:
Вопрос. Почему 200.
в браузере О том, истек ли он, обычно судят по полям expires и cache-control. , Если они существуют одновременно, срок действия покрытия max-age управления кешем истекает.
Как видно из вышеизложенного, max-age = 315360000, время управления кешем составляет десять лет, поэтому, если есть кеш, эта информация всегда будет считываться из кеша. .
Срок действия кеша B истек:
If-None-Match: идентификатор содержимого ресурса, зарезервированный клиентом.
При повторном запросе сравните различия между ними. Если разницы нет, верните 304 и верните 200, если разницы нет.
Обычно, если поля If-None-Match и If-Modified-Since отправляются одновременно, серверу нужно только сравнить содержимое etag. Конечно, конкретный метод обработки зависит от согласованных правил сервера.
Согласно приведенным выше выводам, кеширование браузера также можно разделить на сильное кеширование и кеширование согласования:
Надежный кеш - это оценка периода времени, и если он не истек, кеширование обязательно.
Кэш согласования - это оценка таких запросов, как if-modified-Since / last-modified и if-none-match / etag.
Различное поведение пользователей будет иметь разные эффекты:
1. Доступ к адресной строке / новое открытое окно / вперед / назад /, обычный механизм кеширования браузера;
2. F5 обновить, браузер установит max-age = 0, пропустит строгую оценку кеша и согласовывает оценку кеша;
3. Ctrl + F5 обновить, пропустить сильное кэширование и кэширование согласования и извлечь ресурсы непосредственно с сервера.
Как крупные компании решают проблему сильного кеширования:
Добавьте номер цифровой версии к URL-адресу, как показано на рисунке ниже.Каждый раз, когда вы меняете, когда этот параметр изменяется, сильный кеш будет аннулирован и перезагружен.
Кэш DNS (иногда называемый кэшем DNS- резольвера ) — это временная база данных, поддерживаемая операционной системой компьютера, которая содержит записи обо всех последних посещениях и попытках посещений веб-сайтов и других интернет-доменов.
Другими словами, кеш DNS — это всего лишь память последних поисковых запросов DNS, на которые ваш компьютер может быстро ссылаться, когда он пытается выяснить, как загрузить веб-сайт.
Цель кэша DNS
Интернет использует систему доменных имен (DNS) для поддержания индекса всех общедоступных веб-сайтов и их соответствующих IP-адресов . Вы можете думать об этом как о телефонной книге.
С телефонной книгой нам не нужно запоминать номер телефона каждого человека, и это единственный способ общения с телефоном: с номером. Таким же образом используется DNS, поэтому мы можем избежать необходимости запоминать IP-адрес каждого веб-сайта, что является единственным способом взаимодействия сетевого оборудования с веб-сайтами.
Это то, что происходит за занавеской, когда вы просите свой веб-браузер загружать веб-сайт.
Это происходит для каждого веб-сайта, который вы хотите посетить. Каждый раз, когда пользователь посещает веб-сайт по имени своего хоста, веб-браузер инициирует запрос в Интернет, но этот запрос не может быть завершен до тех пор, пока имя сайта не будет «преобразовано» в IP-адрес.
Проблема заключается в том, что даже если для обеспечения ускорения процесса конверсии/разрешения существует множество публичных DNS-серверов, которые могут использовать вашу сеть, еще быстрее получить локальную копию «телефонной книги», в которую входят тайники DNS играть.
Кэш DNS пытается ускорить процесс еще больше, обработав разрешение имен недавно посещенных адресов до того, как запрос будет отправлен в Интернет.
Примечание. На каждой иерархии процесса «поиска» на самом деле есть DNS-кеши, которые в конечном итоге заставляют ваш компьютер загружать веб-сайт. Компьютер достигает вашего маршрутизатора, который связывается с вашим интернет-провайдером , который может нанести ущерб другому интернет-провайдеру, прежде чем он завершится на том, что называется «корневыми DNS-серверами». Каждая из этих точек процесса имеет кэш DNS по той же причине, что и ускоряет процесс разрешения имен.
Как работает кеш DNS
Прежде чем браузер выдает свои запросы во внешнюю сеть, компьютер перехватывает каждый из них и ищет доменное имя в базе данных кеша DNS. База данных содержит список всех недавно полученных доменных имен и адресов, которые DNS рассчитывал для них при первом запросе.
Содержимое локального кеша DNS можно просмотреть в Windows с помощью команды ipconfig /displaydns , с результатами, подобными этому:
В DNS запись «A» — это часть записи DNS, которая содержит IP-адрес для данного имени хоста. Кэш DNS хранит этот адрес, запрашиваемое имя веб-сайта и несколько других параметров из записи DNS хоста.
Что такое отравление кэша DNS?
Кэш DNS становится отравленным или загрязненным, когда в него вставлены неавторизованные доменные имена или IP-адреса.
Иногда кеш может быть поврежден из-за технических сбоев или административных аварий, но отравление кеша DNS обычно связано с компьютерными вирусами или другими сетевыми атаками, которые вставляют неверные записи DNS в кеш.
Отравление заставляет запросы клиентов перенаправляться в неправильные адресаты, как правило, вредоносные веб-сайты или страницы с рекламными объявлениями.
Очистка DNS: как её выполнить и что она делает
При устранении неполадок кеша или других проблем с подключением к Интернету администратор компьютера может захотеть сбросить (то есть очистить, сбросить или стереть) кеш DNS.
Поскольку очистка кэша DNS удаляет все записи, он также удаляет все недопустимые записи и заставляет ваш компьютер повторно заполнять эти адреса при следующем попытке доступа к этим веб-сайтам. Эти новые адреса берутся с DNS-сервера, который настроен вашей сетью.
У маршрутизатора также может быть кеш DNS, поэтому перезагрузка маршрутизатора часто является этапом устранения неполадок. По той же причине вы можете очистить кеш DNS на своем компьютере, вы можете перезагрузить маршрутизатор, чтобы очистить записи DNS, хранящиеся во временной памяти.
Шесть, механизм кэширования
Обязательное кэширование имеет приоритет над кэшированием согласования. Если обязательное кэширование (Expires и Cache-Control) вступает в силу, кеш используется напрямую, а если он не вступает в силу, согласованное кеширование (Last-Modified / If-Modified-Since и Etag / If-None-Match), кэш согласования определяется сервером, следует ли использовать кеш. Если кеш согласования недействителен, запрошенный кеш недействителен. Верните 200, верните идентификатор ресурса и кеша и сохраните его в браузере. cache; вернуть 304, если он вступит в силу, продолжить использование кеша. Конкретная блок-схема выглядит следующим образом:
Видя это, я не знаю, есть ли у вас такой вопрос:Что будет делать браузер, если стратегия кеширования не задана?
В этом случае браузер будет использовать эвристический алгоритм, обычно принимая дату в заголовке ответа минус 10% от значения Last-Modified в качестве времени кеширования.
2.Cache-Control
Cache-Control может быть установлен в заголовке запроса или ответа, а также могут использоваться различные команды в комбинации:
public:Весь контент будет кэшироваться (можно кэшировать как клиент, так и прокси-сервер). В частности, ответ может быть кэширован любым промежуточным узлом, таким как Browser
no-cache: Клиент кэширует контент.Для подтверждения решения необходимо согласовать использование кеша или нет. Это означает, что метод управления кешем Cache-Control не используется для предварительной проверки, но поле Etag или Last-Modified используется для управления кешем.Следует отметить, что название no-cache немного вводит в заблуждение. После установки no-cache это не означает, что браузер больше не кэширует данные, но когда браузер использует кешированные данные, ему необходимо подтвердить, согласуются ли данные с сервером.
max-age: Max-age = xxx (xxx - числовое значение) означает, что срок хранения кэшированного содержимого истечет через xxx секунд.
s-maxage(Единица s): То же, что и max-age, действует только на прокси-сервере (например, в кэше CDN). Например, когда s-maxage = 60, в течение этих 60 секунд, даже если содержимое CDN обновляется, браузер не будет делать запрос. max-age используется для нормального кэширования, а s-maxage используется для кэширования прокси.s-maxage имеет более высокий приоритет, чем max-age. Если присутствует s-maxage, заголовки max-age и Expires будут перезаписаны.
max-stale: Максимальный допустимый срок годности. Команда max-stale указывает, что клиент желает получить ответ, срок действия которого истек. Если указано значение max-stale, максимальное время допуска равно соответствующему количеству секунд. Если не указано иное, браузер готов получить любой ответ о возрасте (возраст представляет собой разницу между временем, когда ответ был сгенерирован или подтвержден исходной станцией, и текущим временем).
min-fresh: Минимальная свежесть, которую можно терпеть. min-fresh указывает, что клиент не желает принимать ответ, свежесть которого не превышает сумму текущего возраста плюс время, установленное min-fresh.
Из рисунка видно, что мы можем использовать несколько инструкций вместе для достижения нескольких целей. Например, мы надеемся, что ресурсы можно кэшировать, и клиент, и прокси-сервер можно кэшировать, а также можно установить время истечения срока действия кеша.
Тип запроса DNS-запроса
2. Ресурсы, которые не часто меняются
Как правило, при работе с такими ресурсами настройте их Cache-Control с большим max-age=31536000 (Один год), так что браузер попадет в обязательный кеш, если тот же URL будет запрошен позже. Чтобы решить проблему обновления, необходимо добавить динамические символы, такие как хэш и номер версии, к имени файла (или пути), а затем изменить динамические символы, чтобы достичь цели изменения ссылочного URL и сделать недействительным предыдущий обязательный cache (на самом деле, он не сразу становится недействительным, просто больше не используется).
Библиотеки классов, предоставляемые в Интернете (например, jquery-3.3.1.min.js , lodash.min.js И т. Д.) Принять эту модель.
DNS-сервер определяет и возвращает стратегию выделения IP-адресов и стратегию клиента для выбора IP-адреса доменного имени.
Простой тест, сначала разрешите 163 доменных имени
Можно видеть, что доменное имя вернуло несколько IP-адресов, и DNS-сервер будет иметь некоторые стратегии для возврата IP-адреса, чтобы гарантировать балансировку нагрузки или гарантию скорости для клиентского доступа к серверу, например, случайный возврат IP-адреса, возврат ближайшего IP-адреса пользователю и т. Д., Его основной контроль. Стратегия заключается в корректировке первого IP-адреса, возвращаемого в списке. RFC1794 объясняет поддержку DNS для балансировки нагрузки:
Обычный клиент (например, браузер) выбирает первый IP-адрес для IP, возвращаемого DNS. Если первый IP-адрес не работает, то берется второй IP-адрес. Также есть клиенты, которые выходят из строя сразу после подключения к первому IP.
2. Расположение кеша
Что касается расположения кэша, существует четыре типа, каждый из которых имеет приоритет.Когда кэш просматривается последовательно и ни один из них не обнаруживается, сеть будет запрошена.
- Service Worker
- Memory Cache
- Disk Cache
- Push Cache
4.Push Cache
Если ни один из четырех вышеуказанных кешей не попадает в систему, вы можете инициировать запрос только на получение ресурсов.
Кеш DNS
Ближе к дому давайте посмотрим, что делает кеширование системы Android.
Срок действия кеша называется TTL (время жизни).
Существует два типа кэширования результатов DNS-запросов: успешные (положительные) запросы и неудачные (отрицательные) запросы (например, доменное имя не существует). Система кеширует не только успешные результаты запроса, но и неудачные результаты!
2.ETag и If-None-Match
Etag - это уникальный идентификатор текущего файла ресурсов (сгенерированный сервером), когда сервер отвечает на запрос. Пока ресурс изменяется, Etag будет регенерирован.. В следующий раз, когда браузер загрузит ресурс и отправит запрос на сервер, он поместит значение Etag, возвращенное в последний раз, в If-None-Match в заголовке запроса. Серверу нужно только сравнить If-None-Match с клиент со своим собственным сервером.Если ETag ресурса согласован, это может быть хорошим решением, был ли ресурс изменен относительно клиента. Если сервер обнаруживает, что ETag не совпадает, он напрямую отправит новый ресурс (включая новый ETag) клиенту в форме обычного пакета возврата GET 200; если ETag согласован, он напрямую вернет 304 в сообщить клиенту напрямую. Используйте локальный кеш.
Android
Согласно официальным документам, кеш DNS обновляется каждые 24 часа на устройствах iOS.
Фундаментальный
Обычно клиент определяет местонахождение целевого хоста через доменное имя при вызовах интерфейса и посещениях страниц, чтобы взаимодействовать со службами на целевом хосте. Однако, чтобы найти процесс, нужен номер IP + порта. Поэтому сначала мы должны преобразовать доменное имя в форму IP.
Этот процесс примерно следующий: клиент отправляет UDP-запрос серверу доменного имени для запроса IP, соответствующего доменному имени. После того, как сервер получает запрос запроса, он возвращает соответствующий IP-адрес клиенту. Что ж, это не так просто, сам процесс намного сложнее.
На этот раз мы сосредоточимся на стороне клиента и не будем обсуждать, как рекурсивно запрашивать. Ниже в качестве примера показан пакет. Это начальный процесс загрузки данных Youmeng SDK на свой сервер.
Сначала отправьте запрос DNS. К счастью, ответ пришел быстро, и IP-адресов было несколько. Да, запросы DNS могут возвращать несколько IP-адресов.
Затем клиент инициирует классическое трехстороннее рукопожатие для одного из IP-адресов: SYN-SYN, ACK-ACK.
Далее вы можете отправлять данные.
Мы обнаружили, что DNS-запросы должны отправлять запросы на сервер доменных имен, и DNS-сервер также может выполнять серию рекурсивных запросов. Это неэффективный процесс, и фактически IP-адрес, соответствующий доменному имени, меняется нечасто. Для повышения эффективности инженеры начали кэшировать результаты DNS-запросов слой за слоем.
Анализ бизнес-сценария
В сочетании с конкретными сценариями 10-секундное время кеширования действительно имеет определенные проблемы. Если разрешение доменного имени на интерфейсе портала не удается, UnknownHostException возникнет на всех интерфейсах CPortal в следующие 10 секунд. Даже если нет централизованного доступа к интерфейсу, клиент Android попытается снова через 6 секунд, поэтому неизбежно возникнет еще одно исключение UnknownHostException. Это привело к тому, что клиент Android в определенной степени увеличил количество исключений UnknownHostExceptions.
Однако большинство устройств в настоящее время имеют более высокие версии системы, и все еще необходимы дальнейшие исследования, чтобы выяснить источник проблемы.
2.Memory Cache
Кэш памяти также является кешем в памяти, который в основном содержит ресурсы, захваченные на текущей странице, такие как стили, сценарии, изображения и т. Д., Которые были загружены на страницу. Чтение данных в памяти определенно происходит быстрее, чем с диска.Хотя кэш памяти эффективен для чтения, продолжительность кеша очень мала и будет освобождаться по мере освобождения процесса.Как только мы закрываем страницу вкладки, кеш в памяти освобождается.。
Итак, поскольку кеш памяти настолько эффективен, можем ли мы хранить данные в памяти?
Это невозможно. Память в компьютере должна быть намного меньше, чем емкость жесткого диска. Операционная система должна тщательно планировать использование памяти, поэтому памяти, которую мы можем использовать, не должно быть много.
После того, как мы зайдем на страницу, снова обновим страницу, мы можем обнаружить, что много данных поступает из кеша памяти.
Важным ресурсом кэша в кэше памяти является инструкция, относящаяся к предварительному загрузчику (например, ) Скачал ресурсы. Хорошо известно, что соответствующие инструкции прелоадера уже являются одним из распространенных методов оптимизации страниц: он может анализировать файлы js / css при запросе следующего ресурса из Интернета.
Читайте также: