-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
etag caching not working as expected #9
Comments
Hi @ThomasGrunewald, this is very interesting, thanks for reporting. This project has a demo iOS app that shows the images in the scroll view. On the server I have set the expiration to 30 sec to match yours. Response for one of the images: http://evgenii.com/files/2015/06/moa_demo/ChirogaleusMiliiSmit.jpg
Once all the images are downloaded by the app, it sends all the subsequent requests with the "If-" headers: I could not reproduce your problem, for me it always sends "If-" headers after the first download for default settings. But then I reduced the sizes of both the memory and disc cache to 512 KB. // Change memory cache size. Default is 20 MB.
Moa.settings.cache.memoryCapacityBytes = 512 * 1024
// Change disk cache size. Default is 100 MB.
Moa.settings.cache.diskCapacityBytes = 512 * 1024 Now it started sending the requests without the "If-"headers. I guess this is happening because the cache size is not enough to keep all the images in it. If your images are large and/or there are a lot of them that default cache may not be large enough to store all the images. This is just a hypothesis. What do you think? I was using Xcode 8, iOS 10 simulator and Charles proxy. I will keep my server running with 30 sec cache expiration for now so we can debug the problem. |
Thanks for your quick reply @evgenyneu . I forgot to tell you about my testing environment. I am using |
That may be the case. I just tested the Swift 2.2 version of Moa in iOS 9 Simulator and Xcode 7. I could not reproduce your issue. It always sent subsequent requests with "If-" headers for me. Here is how to jump back to the Swift 2.2 version:
Maybe there are differences between our server responses as well. If you are willing to share your image URLs I would test them in the Swift 2.2 version of the demo and see if I can catch the problem. |
I have detected a issue with the cache behavior. From the server in the image response header I get following cache related fields:
If I scrolling the tableView up and down the images getting cached or newly requested with the
request header fields:
In that case the response status code is 304 and the images are loaded from the cache.
So fare so good. But when the scrolling frequency is getting higher the images are sometimes loaded again and again without the
If-Modified-Since
andIf-None-Match
header fields set.I using the standard cache configuration.
The text was updated successfully, but these errors were encountered: