Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit 613fa6a

Browse files
committed
Change npm package README.md
1 parent 4124f3d commit 613fa6a

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/README.md

+8-4
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
A project committed to make file acess and data transfer easier, efficient for React Native developers.
66

7+
# [Please visit our Github Page for latest document](https://github.com/wkh237/react-native-fetch-blob)
8+
79
## Features
810
- Transfer data directly from/to storage without BASE64 bridging
911
- File API supports normal files, Asset files, and CameraRoll files
1012
- Native-to-native file manipulation API, reduce JS bridging performance loss
1113
- File stream support for dealing with large file
1214
- Blob, File, XMLHttpRequest polyfills that make browser-based library available in RN (experimental)
1315

14-
> The npm package is inside `src` folder, if you're going to install via git repository do not directly poiint to this folder
15-
1616
## TOC
1717
* [About](#user-content-about)
1818
* [Installation](#user-content-installation)
@@ -157,6 +157,8 @@ To sum up :
157157
- Otherwise, if a string starts with `RNFetchBlob-file://` (which can simply done by `RNFetchBlob.wrap(PATH_TO_THE_FILE)`), it will try to find the data from the URI string after `RNFetchBlob-file://` and use it as request body.
158158
- To send the body as-is, simply use a `Content-Type` header not containing `;BASE64` or `application/octet`.
159159

160+
> It is Worth to mentioning that the HTTP request uses cache by default, if you're going to disable it simply add a Cache Control header `'Cache-Control' : 'no-store'`
161+
160162
> After 0.9.4, we disabled `Chunked` transfer encoding by default, if you're going to use it, you should explicitly set header `Transfer-Encoding` to `Chunked`.
161163
162164
### Download example : Fetch files that needs authorization token
@@ -268,7 +270,7 @@ RNFetchBlob.fetch('POST', 'https://content.dropboxapi.com/2/files/upload', {
268270
}),
269271
'Content-Type' : 'application/octet-stream',
270272
// here's the body you're going to send, should be a BASE64 encoded string
271-
// (you can use "base64" APIs to make one).
273+
// (you can use "base64"(refer to the library 'mathiasbynens/base64') APIs to make one).
272274
// The data will be converted to "byte array"(say, blob) before request sent.
273275
}, base64ImageString)
274276
.then((res) => {
@@ -709,10 +711,12 @@ Here's a [sample app](https://github.com/wkh237/rn-firebase-storage-upload-sampl
709711

710712
## Performance Tips
711713

712-
**Reduce RCT Bridge and BASE64 Overheard**
714+
**Read Stream Event Overhead**
713715

714716
When reading data via `fs.readStream` the process seems blocking JS thread when file is large, it's because the default buffer size is quite small (4kb) which result in large amount of events triggered in JS thread, try to increase the buffer size (for example 100kb = 102400) and set a larger interval (which is introduced in 0.9.4 default value is 10ms) to limit the frequency.
715717

718+
**Reduce RCT Bridge and BASE64 Overhead**
719+
716720
React Native connects JS and Native context by passing JSON around React Native bridge, and there will be an overhead to convert data before they sent to each side. When data is large, this will be quite a performance impact to your app, it's recommended to use file storage instead of BASE64 if possible.The following chart shows how much faster when loading data from storage than BASE64 encoded string on iphone 6.
717721

718722
<img src="img/performance_1.png" style="width : 100%"/>

0 commit comments

Comments
 (0)