0
Q
凌空請求機制
A
回答
1
當你運行你的應用程序,第一次請求URL時,Volley還會檢查該URL的緩存條目是否存在。如果是,它是有效的(未過期),Volley將從緩存獲取響應。否則,它傳遞給網絡線程。獲取響應數據時,它會解析響應頭以查看數據是否可以緩存。 然後,對於同一個url的第二個請求,儘管網絡關閉或沒有,web服務是否可用,如果該url的緩存條目存在且有效,緩存數據將用於響應。
你可以發現裏面CacheDispatcher.java file
...
final Request<?> request = mCacheQueue.take();
request.addMarker("cache-queue-take");
// If the request has been canceled, don't bother dispatching it.
if (request.isCanceled()) {
request.finish("cache-discard-canceled");
continue;
}
// Attempt to retrieve this item from cache.
Cache.Entry entry = mCache.get(request.getCacheKey());
if (entry == null) {
request.addMarker("cache-miss");
// Cache miss; send off to the network dispatcher.
mNetworkQueue.put(request);
continue;
}
// If it is completely expired, just send it to the network.
if (entry.isExpired()) {
request.addMarker("cache-hit-expired");
request.setCacheEntry(entry);
mNetworkQueue.put(request);
continue;
}
// We have a cache hit; parse its data for delivery back to the request.
request.addMarker("cache-hit");
Response<?> response = request.parseNetworkResponse(
new NetworkResponse(entry.data, entry.responseHeaders));
request.addMarker("cache-hit-parsed");
...
也parseCacheHeaders
內HttpHeaderParser.java file更多細節。
如果Web服務器不支持緩存輸出,可以實現對排球緩存爲我的答案在以下問題:
希望它能幫助!
相關問題
- 1. 凌空取消請求
- 2. 凌空第二請求返回空
- 3. 凌空JSON請求不給我響應
- 4. 凌空JsonArrayRequest POST請求不工作
- 5. Android的凌空RxJava - 多請求
- 6. 凌空請求隊列返回null
- 7. Android凌空自定義請求
- 8. 如何調試凌空請求發送
- 9. 凌空用GET請求和參數
- 10. 重試請求onErrorResponse Android凌空
- 11. 凌空內存泄漏請求
- 12. 定製凌空請求類總是返回401
- 13. unsual-get請求結果沒有更新後發佈請求凌空
- 14. 製作採用Android凌空
- 15. 凌空JsonObjectRequest發送的報頭的GET請求
- 16. 錯誤代碼400執行時凌空POST請求,但OkHttp
- 17. 同時凌空請求總是返回服務器錯誤
- 18. Android凌空 - 當所有請求完成時得到回調
- 19. 發送帶有凌空POST請求的PHP腳本
- 20. 凌空請求設置於前值,以TextView的
- 21. 發送請求和響應拿到餅乾與Android凌空
- 22. 凌空網絡圖像查看和請求標頭
- 23. 獲得500錯誤凌空PUT請求的Android
- 24. 發送數據請求(無JSON)凌空android
- 25. 當所有請求完成時,Android凌空獲得回調
- 26. 接收布爾變量與json請求凌空
- 27. 如何編寫單元測試用例凌空JSON請求
- 28. 凌空請求總是陷入錯誤監聽
- 29. Android的凌空字符串請求響應串
- 30. JSON數組請求與凌空抽射沒有工作