Flutter рекомендует использовать cached_network_image
здесь https://flutter.dev/docs/cookbook/images/cached-images. Я использовал его, и он работал нормально. Я попробовал NetworkImage
, и это тоже сработало.
Я прочитал в документе, что NetworkImage
также кэширует загруженное изображение локально. Так какой смысл использовать cached_network_image
вместо NetworkImage
? Есть ли сравнение того, как их стратегии кэширования отличаются друг от друга?
Разница существенна и очень полезна... как вы знаете, получение изображения из сети требует времени, поэтому кешированное сетевое изображение предоставляет вам опции для пробела, отображаемого при загрузке, и виджет ошибки, когда не может загрузиться, которого нет в NetworkImage . Как разработчик, вы должны быть готовы к любой ситуации, поэтому рекомендуем кешированные сетевые образы.
Так что все же я предпочитаю cachedNetworkImage , пока NetworkImage не имеет аналогичных функций.
Надеюсь ты понимаешь! В противном случае, дайте мне знать в комментариях внизу!
Спасибо! Заполнитель действительно полезен. Помимо этого, как насчет стратегии кэширования?
Например, где они сохраняют временные файлы, сохраняют ли они и получают кешированное изображение с использованием URL-адреса, через какое время тот же URL-адрес должен быть перезагружен и т. д.
Кэшированные сетевые изображения хранят и извлекают файлы с помощью файла flutter_cache_manager. CacheManager для загрузки и кэширования файлов в каталоге кеша приложения. Могут быть изменены различные настройки того, как долго хранить файл. Он использует HTTP-заголовок управления кешем для эффективного извлечения файлов. Надеюсь, вы поняли... более подробную информацию можно найти в документах этих двух плагинов. Если вы чувствуете, что я могу вам помочь, пожалуйста, отметьте как принятое и проголосуйте!
Спасибо, теперь я знаю, где искать и изучать. Просто хочу подтвердить: я должен изучить cache_manager.dart
вместо cached_network_image
и image_cache.dart
вместо NetworkImage
, верно?
Любая вещь, о которой вы хотите узнать, увидев исходный код, который вы использовали в своем коде, затем нажмите ctrl, а затем щелкните по нему, вы будете автоматически перенаправлены в соответствующий файл, а также соответствующий класс или метод или что-то еще. Но я предлагаю прочитать документы, представленные на сайте pubdev этих плагинов, но чтение кода также является действительно хорошим способом понять.
Image.network теперь имеет параметр loadingBuilder, поэтому теперь он также может отображать индикатор загрузки. Означает ли это, что теперь нет никаких преимуществ использования CachedNetworkImage по сравнению с Image.network?
Название обоих показывает разницу, т. Е. Одно - это только ImageNetwork, а другое - cachedImageNetwork, поэтому слово cached имеет все значение, в cachedImageNetwork после загрузки изображения оно кэшируется в системе до тех пор, пока не изменится URL-адрес, что обеспечивает более быструю загрузку изображения каждый раз. время, а также есть много других функций для изучения, пожалуйста, ознакомьтесь с официальными документами read me.
Я отредактировал свой ответ, и теперь он обновлен, пожалуйста, проверьте его. Надеюсь, это поможет, если да, проголосуйте за это.
Отличие заключается в том, что кэшированное сетевое изображение имеет индикатор загрузки, когда изображение извлекается из Интернета, и показывает значок ошибки, если при загрузке изображения происходит какая-либо ошибка. В то время как сетевой образ не имеет этой функции. https://pub.dev/packages/cached_network_image
Я использовал оба и не вижу значительного улучшения времени загрузки, при каждом запуске моего приложения кажется, что изображения загружаются.
Просто для сведения: я храню изображения в хранилище BLOB-объектов Azure. URL-адреса изображений являются частью файла mongodb.
Эти изображения были сняты с камеры или выбраны из галереи, а затем загружены в Azure. В чем может быть причина того, что кеширование не работает.
на вопрос дан правильный ответ, пожалуйста, отметьте правильный ответ, чтобы он мог правильно направлять других разработчиков