Flutter NetworkImage против cached_network_image

Flutter рекомендует использовать cached_network_image здесь https://flutter.dev/docs/cookbook/images/cached-images. Я использовал его, и он работал нормально. Я попробовал NetworkImage, и это тоже сработало.

Я прочитал в документе, что NetworkImage также кэширует загруженное изображение локально. Так какой смысл использовать cached_network_image вместо NetworkImage? Есть ли сравнение того, как их стратегии кэширования отличаются друг от друга?

на вопрос дан правильный ответ, пожалуйста, отметьте правильный ответ, чтобы он мог правильно направлять других разработчиков

Jagadish 10.08.2022 18:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
1
12 063
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

ОБНОВЛЯТЬ: ImageNetwork теперь имеет параметры loadingBuilder и errorbuilder, поэтому теперь он также может отображать индикатор загрузки, аналогичный кэшированному сетевому изображению . Но в CachedImageNetwork после загрузки изображения оно кэшируется в системе до тех пор, пока URL-адрес не изменится, что обеспечивает более быструю загрузку изображения каждый раз, а также есть много других функций для изучения, см. официальные документы для чтения.

Так что все же я предпочитаю cachedNetworkImage , пока NetworkImage не имеет аналогичных функций.

Надеюсь ты понимаешь! В противном случае, дайте мне знать в комментариях внизу!

Спасибо! Заполнитель действительно полезен. Помимо этого, как насчет стратегии кэширования?

ArtS 12.12.2020 06:33

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

ArtS 12.12.2020 06:36

Кэшированные сетевые изображения хранят и извлекают файлы с помощью файла flutter_cache_manager. CacheManager для загрузки и кэширования файлов в каталоге кеша приложения. Могут быть изменены различные настройки того, как долго хранить файл. Он использует HTTP-заголовок управления кешем для эффективного извлечения файлов. Надеюсь, вы поняли... более подробную информацию можно найти в документах этих двух плагинов. Если вы чувствуете, что я могу вам помочь, пожалуйста, отметьте как принятое и проголосуйте!

Jagadish 12.12.2020 06:49

Спасибо, теперь я знаю, где искать и изучать. Просто хочу подтвердить: я должен изучить cache_manager.dart вместо cached_network_image и image_cache.dart вместо NetworkImage, верно?

ArtS 12.12.2020 07:00

Любая вещь, о которой вы хотите узнать, увидев исходный код, который вы использовали в своем коде, затем нажмите ctrl, а затем щелкните по нему, вы будете автоматически перенаправлены в соответствующий файл, а также соответствующий класс или метод или что-то еще. Но я предлагаю прочитать документы, представленные на сайте pubdev этих плагинов, но чтение кода также является действительно хорошим способом понять.

Jagadish 12.12.2020 07:04

Image.network теперь имеет параметр loadingBuilder, поэтому теперь он также может отображать индикатор загрузки. Означает ли это, что теперь нет никаких преимуществ использования CachedNetworkImage по сравнению с Image.network?

Wes1324 12.08.2021 00:19

Название обоих показывает разницу, т. Е. Одно - это только ImageNetwork, а другое - cachedImageNetwork, поэтому слово cached имеет все значение, в cachedImageNetwork после загрузки изображения оно кэшируется в системе до тех пор, пока не изменится URL-адрес, что обеспечивает более быструю загрузку изображения каждый раз. время, а также есть много других функций для изучения, пожалуйста, ознакомьтесь с официальными документами read me.

Jagadish 12.08.2021 05:11

Я отредактировал свой ответ, и теперь он обновлен, пожалуйста, проверьте его. Надеюсь, это поможет, если да, проголосуйте за это.

Jagadish 12.08.2021 05:28

Отличие заключается в том, что кэшированное сетевое изображение имеет индикатор загрузки, когда изображение извлекается из Интернета, и показывает значок ошибки, если при загрузке изображения происходит какая-либо ошибка. В то время как сетевой образ не имеет этой функции. https://pub.dev/packages/cached_network_image

Я использовал оба и не вижу значительного улучшения времени загрузки, при каждом запуске моего приложения кажется, что изображения загружаются.

Просто для сведения: я храню изображения в хранилище BLOB-объектов Azure. URL-адреса изображений являются частью файла mongodb.

Эти изображения были сняты с камеры или выбраны из галереи, а затем загружены в Azure. В чем может быть причина того, что кеширование не работает.

Другие вопросы по теме