web-dev-qa-db-ja.com

ReactネイティブフェッチAPIはキャッシュを無効にできません

私はビルドしていますAndroid reduxと統合されたreactネイティブexpoを使用するアプリ。APIはフェッチメソッドを使用して呼び出されますが、常にキャッシュされた結果が表示されます。サーバーは2回目にリクエストを受信しませんでした。次のコードでキャッシュを無効にします。

export const mymails = (token) => {
    return fetch(
        API_URL+'?random_number='+ new Date().getTime(), {
        method: 'GET',
        headers: getHeaders(token)
    })  
    .then(response => response.json());
};

getHeaders = (token) => {
    return {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Authorization': 'Token token='+token,
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': 0
    };
}

Postmanクライアントを介してAPIを呼び出すと、異なる結果が表示されます(キャッシュされません)。パラメータとして乱数を追加し、キャッシュ制御ヘッダーを設定しようとしましたが、それでもキャッシュされた結果が返されました。他に試すことができるものはありますか?.

ありがとう

16
Mirza Vu

リクエストを取得するためのヘッダーの設定方法に問題があるはずです。

以下で試してください

Official Fetch API で同じリンクをたどることができます

const mymails = (token) => {

    var myHeaders = new Headers();
    myHeaders.set('Accept', 'application/json');
    myHeaders.set('Content-Type', 'application/json');
    myHeaders.set('Authorization', 'Token token=' + String(token));
    myHeaders.set('Cache-Control', 'no-cache');
    myHeaders.set('Pragma', 'no-cache');
    myHeaders.set('Expires', '0');

    return fetch(
        API_URL + '?random_number=' + new Date().getTime(), {
            method: 'GET',
            headers: myHeaders
        })
        .then(response => response.json());
};
8
RAHUL JOSHI