potatotips #55 (iOS/Android開発Tips共有会) https://potatotips.connpass.com/event/100763/
iOS ͷ HTTP Ωϟογϡʹ͍ͭͯ2018.10.9 - potatotips #55Satoshi Hachiya (@jpmartha_jp)
View Slide
Satoshi Hachiya (@jpmartha_jp)
ࠓͷ• API ͷϨεϙϯεͰߋ৽༰͕͙͢ʹө͞Εͳ͔ͬͨ• iOS ଆͷܿനΛূ໌͢ΔͨΊʹࢼͨ͠খωλ• ͙͢͏Α͏ͳωλͰͳ͍͕Կ͔͋ͬͨͱ͖ͷࢀߟʹ
HTTP Ωϟογϡhttps://developer.mozilla.org/ja/docs/Web/HTTP/Cachingʮաڈʹऔಘͨ͠ϦιʔεΛ࠶༻͢ΔͱɺΣϒαΠτΞϓϦέʔγϣϯͷύϑΥʔϚϯε͕େ্͖͘͢ΔͰ͠ΐ͏ɻΣϒΩϟογϡԆωοτϫʔΫͷτϥϑΟοΫΛݮͯ͠ɺϦιʔεΛදࣔ͢ΔͨΊʹඞཁͳ࣌ؒॖ͠·͢ɻ HTTPΩϟογϡΛ༻͢ΔͱɺΣϒαΠτͷԠੑ͕ߴ·Γ·͢ɻʯ
https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=jaʮωοτϫʔΫܦ༝ͰใΛऔಘ͢Δʹ࣌ؒίετ͔͔Γ·͢ɻϨεϙϯε͕େ͖͍ͱɺΫϥΠΞϯτͱαʔόʔؒͷϥϯυτϦοϓΛԿ܁Γฦ͢ඞཁ͕͋ΔͨΊɺϨεϙϯε͕ར༻ՄೳͱͳͬͯϒϥβͰॲཧͰ͖ΔΑ͏ʹͳΔ·Ͱ͕͔͔࣌ؒΓ·͢ɻ͞ΒʹɺϢʔβʔଆͰσʔλͷ௨৴ίετ͕ൃੜ͠·͢ɻͦͷͨΊɺલʹऔಘͨ͠ϦιʔεΛΩϟογϡʹอଘͯ͠࠶༻Ͱ͖Δ͜ͱɺύϑΥʔϚϯεΛ࠷దԽ͢Δ্ͰඇৗʹॏཁͰ͢ɻʯ
iOS ͰΩϟογϡΛಡΈࠐ·ͳ͍ํ๏άάΕ͙͢ݟ͔ͭΔ
CachePolicy Λมߋ
ͪͳΈʹ.reloadIgnoringLocalAndRemoteCacheData ࣮͞Ε͍ͯͳ͍ʂ
ͦΕ͓͖ͯ͞
CachePolicy ͷઃఆ͚ͩͰΩϟογϡΛಡΈࠐ·ͳ͍͕!อଘ͢Δ
γϛϡϨʔλʔͰΩϟογϡΛ֬ೝ
อଘॴ/Library/Developer/CoreSimulator/Devices/xxx/data/Containers/Data/Application/xxx/Library/Caches/com.example.bundleid ʹ͋ͬͨ
cache.db Λͷͧ͘• DB Browser for SQLite
͜Μͳײ͡
ΩϟογϡΛಡΈࠐ·ͳ͍ʢΆ͍ʣ͠ɺ͜ΕͰΑ͘ͳ͍ʁ
ΕͨΒ·͍ͣΩϟογϡอଘ͠ͳ͍• ॏཁใͷ࿙͍͑ʹͭͳ͕ΔεϚϗΞϓϦͷΩϟογϡͱରࡦɿhttps://www.lac.co.jp/lacwatch/people/20180228_001581.html• ͨͩͪ͜͠ΒͰհ͞Ε͍ͯΔํ๏ͷ͏ͪɺCapacity = 0 ͩͱͦΕҎ߱ΩϟογϡΛར༻Ͱ͖ͳ͘ͳΓͦ͏
ΩϟογϡΛಡΈࠐ·ͳ͍͠อଘ͠ͳ͍ํ๏
configuration.urlCache = nil
·ͨ .ephemeral
ͨͩ͠ɺ͍ͣΕطଘͷΩϟογϡΔ
ΩϟογϡΛআ͢Δํ๏ͯ͢আૂ͍ܸͪʢࣦഊʣsession.configuration.urlCache?.removeCachedResponse(for: urlRequest)
·ͱΊ• લఏɿΩϟογϡύϑΥʔϚϯε্ʹඞཁ• requestCachePolicy Λมߋ͚ͨͩ͠ͰΩϟογϡΛอଘ͢Δ• urlCache = nil ʹมߋͯ͠طଘͷΩϟογϡΔʢ.ephemeral ʣ• removeAllCachedResponses Ͱͯ͢আ͢Δ• Capacity = 0 ʹ͢ΔͱͦΕҎ߱ΩϟογϡΛར༻Ͱ͖ͳ͍ʁ
ࢀߟ• URL Loading Systemɿhttps://developer.apple.com/documentation/foundation/url_loading_system• Ωϟογϡͷڍಈɿhttps://developer.apple.com/documentation/foundation/nsurlrequest/cachepolicy/useprotocolcachepolicy• ΩϟογϡͷΞΫηεɿhttps://developer.apple.com/documentation/foundation/url_loading_system/accessing_cached_data
Thanks!