On 28 Oct 2017, at 03:11, sebastienboisv...@yahoo.com wrote:

> I'd like to understand the reasoning behind making NSHTTPStorage globally 
> available to all apps vs. NSURLCache being per-app only.

To start, the cookie store is not global, it’s per user.  That level of sharing 
is grandfathered in from the very early days of NSURLConnection, which was 
really just the back end of Safari factored out for everyone to use.  At the 
time it made sense for Safari and all the user’s apps to share a cookie store.

These days, of course, that policy is considered security madness.  Across all 
of our platforms the only apps that share Safari’s cookie store are non-MAS 
apps on the Mac.  Everything else has its own cookie store (although they can 
share cookie stores via App Groups).

As to the difference between the cookie store and the cache, I suspect that’s 
an artefact of the implementation.  Back in the day both were stored as simple 
files on disk.  Obviously it’s a pain to coordinate shared access to such 
files.  Doing this for cookies was considered important, so the implementers 
came up with a (clunky) scheme for that.  Doing it for the cache wasn’t 
important — and it’s much harder due to the expected access patterns for the 
cache — so the caches were left separate.

On modern systems the cookie store and cache are actually managed by a 
<x-man-page://8/nsurlstoraged>, so this coordination is much easier.  This is 
what enables, for example, each App Group to have a shared cookie store.

If you want to share a cache between processes you may be able to do that by 
having them both initialise an NSURLCache instance to point to the same place 
on disk (using `-initWithMemoryCapacity:diskCapacity:diskPath:`).  I /think/ 
that’ll work but I haven’t looked into it in detail so I’m not 100% sure.

If you need a definitive answer to the last point I recommend that you open a 
DTS tech support incident for it.  That’ll allow me to spend time researching 
it properly.

<https://developer.apple.com/support/technical/>

Share and Enjoy
--
Quinn "The Eskimo!"                    <http://www.apple.com/developer/>
Apple Developer Relations, Developer Technical Support, Core OS/Hardware


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (Macnetworkprog@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/macnetworkprog/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to