A propper way to load images
Maintainer thường phản hồi trong vòng 2 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- objective-c, react-native
- Lĩnh vực
- mobile, performance
Hướng nghiên cứu
Bắt đầu bằng việc xem xét tích hợp image-loader của React Native và ví dụ EnrichedImageLoader được cung cấp, bao gồm các đường dẫn xử lý asset cục bộ và header của nó. Xác định cách tích hợp các loader iOS và Android; hoàn thành có nghĩa là các request lặp lại cho cùng một URL hình ảnh được khử trùng lặp mà không làm hỏng asset cục bộ hoặc header của request.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
Currently, if we have multiple images with the same URL, we will fire multiple requests for them. It's okay when we have different small images. But if someone, for some reason, inserts a lot of full hd images with the same url it will take longer to download all of them separately.
Critical problems:
- Unnecessary CPU pressure
- Additional work for servers
- Additional network data usage.
Solution
We should implement/extend react-native's Imageloader or add our own image loader with SDWebImage for ios or GlideLoader for Android.
Here is a simple example with SDWebImageLoader that we currently use in our app:
#import "EnrichedImageLoader.h"
#import <React/RCTUtils.h>
@implementation EnrichedImageLoader
+ (instancetype)shared {
static EnrichedImageLoader *shared;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [self new];
shared.sdManager = [SDWebImageManager sharedManager];
});
return shared;
}
- (void)loadImage:(NSURL *)url completion:(void (^)(UIImage *))completion {
if (!url) {
completion(nil);
return;
}
if (RCTIsLocalAssetURL(url)) {
completion(RCTImageFromLocalAssetURL(url));
return;
}
[self.sdManager
loadImageWithURL:url
options:SDWebImageHighPriority
progress:nil
completed:^(UIImage *_Nullable image, NSData *_Nullable data,
NSError *_Nullable error, SDImageCacheType cacheType,
BOOL finished, NSURL *_Nullable imageURL) {
completion(image);
}];
}
- (void)loadImage:(NSURL *)url
headers:(NSDictionary<NSString *, NSString *> *)headers
completion:(void (^)(UIImage *image))completion {
if (!url) {
completion(nil);
return;
}
SDWebImageDownloaderRequestModifier *requestModifier =
[SDWebImageDownloaderRequestModifier
requestModifierWithBlock:^NSURLRequest *_Nullable(
NSURLRequest *_Nonnull request) {
NSMutableURLRequest *modifiedRequest = [request mutableCopy];
for (NSString *key in headers) {
[modifiedRequest setValue:headers[key] forHTTPHeaderField:key];
}
return modifiedRequest;
}];
SDWebImageContext *context =
@{SDWebImageContextDownloadRequestModifier : requestModifier};
[self.sdManager
loadImageWithURL:url
options:SDWebImageHighPriority
context:context
progress:nil
completed:^(UIImage *_Nullable image, NSData *_Nullable data,
NSError *_Nullable error, SDImageCacheType cacheType,
BOOL finished, NSURL *_Nullable imageURL) {
completion(image);
}];
}
@end
- Ngôn ngữ chính
- C
- Star
- 1.4k
- Fork
- 67
- Merge trung bình
- 4 ngày 11 giờ
- Pull request đã merge (30 ngày)
- 7
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của software-mansion/react-native-enriched-html
-
HIGH level tiptap package advisoryCó thể đã có người làm @hejsztynx đã nhận 15 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
software-mansion/react-native-enriched-html#802 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
software-mansion/react-native-enriched-html#618 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Support for `<raw-text-block>`Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
software-mansion/react-native-enriched-html#803 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Add support for nested listsĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
software-mansion/react-native-enriched-html#800 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Text immediately before an `<img>` sometimes fails to repaint on iOS after a screen revisit (`EnrichedText`)Có thể đã có người làm @hejsztynx đã nhận 15 ngày trước. Đang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
software-mansion/react-native-enriched-html#798 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của software-mansion/react-native-enriched-html
Issue tương tự
-
Discover carries headerEdges that nothing reads since #1914 moved E0507/E0517 to the compiler graphĐang mởtech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
2个显示的问题Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
coolsnowwolf/lede#14209 ·
-
Cannot run pico-hsm-tool.pyĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
polhenarejos/pico-hsm#147 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
OpenPrinting/cups#1746 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Status: Opened
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày