Подтвердить что ты не робот

Может ли кто-то объяснить кеш-память в Google Chrome?

В соответствии с этим API-документом, который является единственным источником, который я нашел, который описывает кеш в памяти:

Chrome использует два кэша - кеш на диске и очень быструю память кэш. Срок службы кэша в памяти привязан к времени жизни процесса рендеринга, который примерно соответствует вкладке. Просит, чтобы ответы из кеша в памяти невидимы для веб-запроса API. Если обработчик запроса изменяет свое поведение (например, поведение, в соответствии с которым блокируются запросы), простая страница обновление может не уважать это измененное поведение. Чтобы убедиться, что изменение поведения проходит, обработчик вызоваBehaviorChanged() для сброса в кэш памяти. Но не делайте этого часто; Очистка кеша - это очень дорогая операция. Вам не нужно звонить handlerBehaviorChanged() после регистрации или отмены регистрации события слушатель.

Мне нужно лучшее понимание кэша в памяти. В частности, мне нужно, чтобы Chrome генерировал полный ресурс webRequest/resource каждый раз, когда я посещаю сайт, включая обновление страницы. Очевидно, это не может быть правдой, если он использует кеш в памяти.

Является ли кеш памяти чистым списком для новой вкладки при создании новой вкладки?

Что означает "очень дорогостоящая операция" в количественном выражении?

Если я вызываю handlerBehaviorChanged() каждый раз, когда страница перезагружается на той же вкладке, это гарантирует полный водопад? В этом случае предел в 20 раз за 10 минут кажется довольно низким.

Любая помощь очень ценится, спасибо!

4b9b3361

Ответ 1

В вашем случае я думаю, что ваша проблема связана с долгосрочным кешем, а не с кешем в памяти. В ресурсном водопаде несколько запросов могут быть помечены как кешированные. Существуют различные способы избежать этого, если вы хотите:

  • Вместо обычной перезагрузки (F5) нажмите CTRL + F5. Это перезагрузит все ресурсы, я обычно нажимаю CTRL + F5 несколько раз, хотя одно время должно быть достаточным.
  • Если вам нужно, чтобы ваша страница перезагружала некоторые определенные ресурсы с сервера каждый раз, когда вас посетил любой пользователь, вы можете использовать некоторые из этих методов:
    • Самый элегантный: настройте сервер для возврата политик кэша в заголовки HTTP https://developer.mozilla.org/es/docs/Web/HTTP/Headers/Cache-Control
    • Добавьте к вашему запросу переменный параметр get каждый раз, например, используйте миллисекунды. Например: https://www.gravatar.com/avatar/c6252fcbc3ce5fc144c11dedd75bce29?_=1501147200802, где 1501147200802 отличается для каждой перезагрузки. Это будет путать кеш, так что ресурс будет загружаться с сервера каждый раз, когда вы его запрашиваете.

Не забудьте применить эти правила только к тем ресурсам, которые вам действительно нужны. В противном случае ваш веб-сервер будет перегружен обычными запросами.

Как указано в упомянутом документе: кеш в памяти не применяется к разным визуализациям страниц даже для одного и того же URL-адреса и на той же вкладке (кэш-память в памяти привязан к времени жизни процесса визуализации), поэтому я думаю это не относится к вашему делу. Цикл рендеринга заканчивается каждый раз, когда страница отображается, а другой запускается, если отображается снова. Например: когда изображение загружается в первый раз, появляется в водопаде, но нет для последующих запросов на той же странице.