2013-06-30 29 views
7

Máy chủ của tôi đang thiết lập phần tử tiêu đề etag để hỗ trợ bộ nhớ đệm.If-None-Match và NSURLConnection

iOS (6.1.4) ứng dụng được sử dụng lớp NSURLConnection mẹ đẻ để gửi yêu cầu đến máy chủ XML

lần đầu tiên máy chủ đang gửi phản ứng với etag thiết trong tiêu đề

Nếu iOS ứng dụng đang gửi chính xác yêu cầu tới máy chủ, tôi có thể thấy trong nhật ký máy chủ rằng tiêu đề if-no-match không được điền bởi NSURLConnection

... và sau đó máy chủ phản hồi 200 thay vì 304

chính sách cache được sử dụng để yêu cầu là:

[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad]; 

NSURLCache được khởi tạo với

[[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10]; 

Câu hỏi của tôi: - Có bình thường mà NSURLConnection không đặt "if-none-match" header field ? - Tôi có cần tự thiết lập trường tiêu đề này không? (nhận phản hồi từ bộ nhớ cache, đọc giá trị etag và đặt trong tiêu đề yêu cầu)?

Trả lời

1

Tôi đã gặp sự cố tương tự với điều này. Đối với tôi, tôi đã sử dụng chính sách cache mặc định (NSURLRequestUseProtocolCachePolicy) và nó đã được tự động thiết lập trường tiêu đề "if-none-match" mà máy chủ sẽ kiểm tra. Tuy nhiên, việc đặt chính sách bộ nhớ cache là "NSURLRequestReloadIgnoringLocalCacheData" rõ ràng đã xóa trường tiêu đề đó.

Bạn đã thử các giá trị chính sách bộ nhớ cache khác để xem liệu chúng có thêm tiêu đề đó cho bạn không?

Một blog tuyệt vời về những giá trị chính sách bộ nhớ cache khác nhau có thể được nhìn thấy ở đây: http://nshipster.com/nsurlcache/

chỉnh sửa: Tôi tìm thấy một tràn câu hỏi chồng mà khẳng định những gì tôi đã nói ở trên: NSURLCache and ETags

0

Cũng nhìn lên những biểu tượng trong Xcode (nhấp chuột phải vào biểu tượng và "Chuyển tới định nghĩa"). Có một số là hiện tại nhưng chưa thực hiện, theo ý kiến ​​của tập tin!

Các vấn đề liên quan