Ich baue eine API auf Rails Version 4.1.7/Nginx, die auf Anfrage von einer iOS App reagiert. Wir sehen auf dem Client ein seltsames Caching, und wir denken, dass es etwas mit einem kleinen Unterschied in der Antwort zu tun hat, den Rails zurücksendet. Meine Fragen ...Wann reagiert Rails mit 'Transfer-Encoding' vs. 'Content-Length'?
1) Ich möchte verstehen, warum für die exakt gleiche Anfrage (mit nur der Authorization-Header-Wert geändert), sendet Rails manchmal transfer-encoding: chunked
manchmal und Content-Length: <number>
manchmal? Ich dachte, dass es vielleicht etwas mit der Antwortgröße zu tun hat, aber in den Beispielantworten, deren Header ich unten eingefügt habe, sind die im Körper zurückgegebenen Daten GENAU die gleichen.
2) Gibt es eine Möglichkeit, es zu zwingen, Content-Length
zu verwenden? Wir denken, dass dies unsere Caching-Probleme in unserer iOS App beheben wird.
Antwort # 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
Antrag # 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
Hat Rails die zweite Antwort zurückgeschickt, oder hat nginx? Das heißt, macht Nginx sein eigenes Caching? –
@MichaelHampton hmm ... Ich schaue hinein und melde mich zurück ... – readyornot