Как предоставить вашим клиентам самые свежие и лучшие
Яркая сторона кеширования
Кэширование отлично подходит для частой выборки больших ресурсов: библиотек, изображений или других ресурсов. Механизм довольно прост для объяснения и понимания: ресурсы имеют уникальный URL-адрес, и на основе этого браузер сохраняет на устройстве пользователя загруженный ресурс для последующего повторного использования.
Браузеры также могут получать от серверов инструкции о том, как долго нужно кэшировать контент. В случае больших библиотек (таких как main.dart.js, текущий вывод Flutter для веб-платформы) мы хотели бы, чтобы они кешировались навсегда, если ничего не изменится.
Например, мой main.dart.js в настоящее время имеет размер ~ 2 МБ. Получение чего-то такого большого по сети является как медленным (требуется много обращений к серверу, так и клиент-серверным, что требует времени, а начальное время загрузки - это то, что делает или ломает приложение - веб или мобильное приложение), но и дорого (во-первых, учтите затраты на передачу данных, понесенные пользователем. , затем для себя, обслуживающего этот контент).
Таким образом, наличие этого механизма экономит время и деньги. Здорово, правда?
Есть и некрасивая сторона
После кэширования ресурсов пользователи будут видеть и использовать эти версии до тех пор, пока кеш не будет очищен. Такое случается нечасто, особенно если сервер дал браузеру указание не делать этого.
Обычно, чтобы преодолеть это, пользователи должны войти в настройки своего браузера, пройти через некоторые замысловатые меню, найти нужное место, где есть возможность очистить его кеш, а затем перезагрузить веб-сайт, чтобы получить новую версию ресурсов.
Что ж, удачи в объяснении вашим клиентам, как очистить кеш браузера (если вам повезло, что вы можете связаться с ними)!
Действия, которые они должны предпринять, зависят от их устройства, операционной системы и предпочитаемого браузера (и его версии). Например, один и тот же браузер в Windows имеет другое расположение для MacOS, не говоря уже о мобильных устройствах.
Контекст
Недавно я наткнулся на «уродливую сторону» Flutter для Интернета, сторону, с которой скоро столкнутся еще больше разработчиков.
Я создаю веб-приложение с использованием Flutter и постоянно дорабатываю его. У меня есть группа тестировщиков, которые пробуют работать с приложением, и они сообщают об ошибках, запрашивают функции и предоставляют общие отзывы.
Иногда я получал отчеты об ошибках, которые я уже исправил, и быстро понял, что тестировщики использовали кешированные версии приложения.
Решение?
Довольно просто!
После создания проекта ваш index.html, расположенный в веб-папке ,, будет выглядеть следующим образом:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>to_cache_or_not_to_cache</title> </head> <body> <script src="main.dart.js" type="application/javascript"></script> </body> </html>
Чтобы заставить браузеры перезагружать наше приложение, мы каждый раз, когда захотим, будем добавлять уникальный параметр в сценарий main.dart.js src (я назвал его версия, хотя это может быть что угодно, даже случайное число после ?). Новый index.html будет выглядеть так:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>to_cache_or_not_to_cache</title> </head> <body> <script src="main.dart.js?version=1" type="application/javascript"></script> </body> </html>
Нет, нет, уродливой стороны
Это гарантирует перезагрузку вашего приложения и по-прежнему будет кэшировать его для будущих перезагрузок, пока вы не решите сделать новое обновление. Затем вы просто увеличиваете номер своей версии.
Тем не менее, у этого подхода есть небольшой недостаток: предыдущие версии некоторое время остаются в кеше в браузере пользователя. Если это то, с чем ты можешь жить, прекрасно. В противном случае существует надежное решение, которое может избежать этого недостатка, хотя для этого вам придется выполнить кодирование на стороне сервера.
Подробнее о кешировании можно узнать здесь.
Это все!