• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSURLRequest conditional GET
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSURLRequest conditional GET


  • Subject: Re: NSURLRequest conditional GET
  • From: Marc Monguio <email@hidden>
  • Date: Thu, 19 Jun 2008 18:42:58 +0200

below...

On Jun 19, 2008, at 6:13 PM, Jens Alfke wrote:


On 18 Jun '08, at 3:01 AM, Marc Monguio wrote:

The documentation I've found about "Conditional GET" in the web says I should be sending "If-Modified-Since" and "If-None-Match" headers with the contents of "Last-Modified" and ETag" headers from the last server's answer. However it doesn't look like a NSURLRequest with a NSURLRequestUseProtocolCachePolicy is adding the "If-None-Match" header. Fortunately it adds the "Last-Modified" header automatically so I've tweaked my server-side to be able to work just with this header for caching.

Is this a bug in NSURLRequestUseProtocolCachePolicy ?

I think so; or at least a case where it's not being as optimal as it could be.

I submitted a bug to Apple's. Id 6021187


When debugging the status in the "connection:didReceiveResponse:" delegate method the statusCode is always 200. I knew for sure than in fact it was being cached so I ran "tcpdump" and I saw that except the first call the rest were always Status Code 304 Not Modified. Why I can't see what I really get from the server in my code?

I think the framework does this intentionally since it's hiding the details of the caching from you. Since you didn't explicitly add an if-modified-since header to your request, a 304 response wouldn't be a valid status code for the request as you generated it.

I agree. My concern is that there seems to be no way to know if caching is actually working unless you sniff your TCP connections which is obviously a workaround.


When I've implemented conditional requests, I've always added the necessary headers myself. I haven't used the CFNetwork cache at all in these cases; but I think you could do so by first sending the request in use-cache-only mode, checking the mod date and etag of the response, and then sending a request with your own if-none-match and if-modified-since headers, using the ignore-cache mode.

Since my setup works I'll keep using NSURLRequest with NSURLRequestUseProtocolCachePolicy. It's always good to know that you have actually added the Headers manually and that it works. Thanks.
_______________________________________________


Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >NSURLRequest conditional GET (From: Marc Monguio <email@hidden>)
 >Re: NSURLRequest conditional GET (From: Jens Alfke <email@hidden>)

  • Prev by Date: Re: Can't sort NSTableView
  • Next by Date: Re: Services menu invoke from the command line?
  • Previous by thread: Re: NSURLRequest conditional GET
  • Next by thread: Binding the enabled property of a NSMatrix instance to wether or not a multiple selection on a array controller is made.
  • Index(es):
    • Date
    • Thread