哪種是最佳存儲翻新 POST請求緩存?Android翻新POST請求緩存
我將存儲響應並在用戶離線時使用該響應。我被引用這個鏈接。
1)Can Retrofit with OKHttp use cache data when offline
2)Cache POST requests with OkHttp
但在這個環節上的緩存機制的工作只有GET方法。
- 使用改造可以將緩存存儲在發佈請求中?
- 任何庫都可以處理網絡緩存嗎?
感謝
哪種是最佳存儲翻新 POST請求緩存?Android翻新POST請求緩存
我將存儲響應並在用戶離線時使用該響應。我被引用這個鏈接。
1)Can Retrofit with OKHttp use cache data when offline
2)Cache POST requests with OkHttp
但在這個環節上的緩存機制的工作只有GET方法。
- 使用改造可以將緩存存儲在發佈請求中?
- 任何庫都可以處理網絡緩存嗎?
感謝
支持這是我們結束了
public class OnErrorRetryCache<T> {
public static <T> Observable<T> from(Observable<T> source) {
return new OnErrorRetryCache<>(source).deferred;
}
private final Observable<T> deferred;
private final Semaphore singlePermit = new Semaphore(1);
private Observable<T> cache = null;
private Observable<T> inProgress = null;
private OnErrorRetryCache(Observable<T> source) {
deferred = Observable.defer(() -> createWhenObserverSubscribes(source));
}
private Observable<T> createWhenObserverSubscribes(Observable<T> source)
{
singlePermit.acquireUninterruptibly();
Observable<T> cached = cache;
if (cached != null) {
singlePermit.release();
return cached;
}
inProgress = source
.doOnCompleted(this::onSuccess)
.doOnTerminate(this::onTermination)
.replay()
.autoConnect();
return inProgress;
}
private void onSuccess() {
cache = inProgress;
}
private void onTermination() {
inProgress = null;
singlePermit.release();
}
}
的解決方案,我們需要從緩存改造HTTP請求的結果。所以這是創造出來的,其中一個可觀察的事物發出一個單一的項目。
如果觀察者在HTTP請求執行時訂閱,我們希望它等待並且不執行兩次請求,除非正在進行的請求失敗。爲此,信號量允許單次訪問創建或返回緩存的觀察值的塊,並且如果創建了新的觀察值,我們將等待直到該結束。
可能與否,POST請求是爲了更改服務器中的數據,您確定要緩存它們嗎? – lelloman
您好@lelloman在我的情況下,我將在用戶離線時獲得緩存響應 –