Tôi đang xây dựng API trên Rails phiên bản 4.1.7/Nginx đáp ứng yêu cầu từ một ứng dụng iOS. Chúng tôi đang nhìn thấy một số bộ nhớ đệm kỳ lạ trên máy khách và chúng tôi nghĩ rằng nó có một cái gì đó để làm với một sự khác biệt nhỏ trong phản ứng mà Rails đang gửi trở lại. Câu hỏi của tôi ...Khi nào Rails phản hồi bằng 'chuyển mã hóa' và 'chiều dài nội dung'?
1) Tôi muốn hiểu tại sao, đối với cùng một yêu cầu (chỉ với giá trị tiêu đề ủy quyền đã thay đổi), Rails gửi lại transfer-encoding: chunked
đôi khi và Content-Length: <number>
đôi khi? Tôi nghĩ rằng có thể nó có liên quan đến kích thước phản hồi, nhưng trong các phản hồi ví dụ có các tiêu đề tôi đã dán bên dưới, dữ liệu được trả về trong cơ thể cũng giống như vậy.
2) Có cách nào để ép buộc sử dụng Content-Length
không? Chúng tôi nghĩ rằng điều đó sẽ khắc phục các sự cố bộ nhớ đệm trong ứng dụng iOS của chúng tôi.
Response # 1
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate
Content-Type: application/json; charset=utf-8
Date: Wed, 18 Mar 2015 00:59:31 GMT
ETag: "86f277ea63295460d4f3bed9a073eaa2"
Server: nginx/1.6.2
Status: 200 OK
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: dd36f139-1986-4da6-9645-4438d41e74b0
X-Runtime: 0.123865
X-XSS-Protection: 1; mode=block
transfer-encoding: chunked
Connection: keep-alive
Yêu cầu # 2
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate
Content-Type: application/json; charset=utf-8
Date: Wed, 18 Mar 2015 00:59:36 GMT
ETag: "86f277ea63295460d4f3bed9a073eaa2"
Server: nginx/1.6.2
Status: 200 OK
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: 0cfd7705-157b-41b5-aa36-739bc6f8302e
X-Runtime: 0.092672
X-XSS-Protection: 1; mode=block
Content-Length: 2234
Connection: keep-alive
Rails có gửi phản hồi thứ hai hay nginx không? Đó là, nginx đang làm bộ nhớ đệm của riêng nó? –
@MichaelHampton hmm ... Tôi sẽ xem xét và báo cáo lại ... – readyornot