2 // CacheStoragePolicy.swift
5 // Created by Hori,Masaki on 2017/02/11.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 private func cacheable(status: Int) -> Bool {
24 private func cacheable(response: HTTPURLResponse) -> Bool {
26 guard let cc = response.allHeaderFields["Cache-Control"] as? String,
27 let _ = cc.lowercased().range(of: "no-store")
33 private func cacheable(request: URLRequest) -> Bool {
35 guard let cc: String = request.allHTTPHeaderFields?["Cache-Control"]
38 if let _ = cc.lowercased().range(of: "no-store") { return false }
39 if let _ = cc.lowercased().range(of: "no-cache") { return false }
44 private func policy(request: URLRequest) -> URLCache.StoragePolicy {
46 if let scheme = request.url?.scheme?.lowercased(),
49 return .allowedInMemoryOnly
55 func cacheStoragePolicy(for request: URLRequest, response: HTTPURLResponse) -> URLCache.StoragePolicy {
57 if cacheable(status: response.statusCode),
58 cacheable(response: response),
59 cacheable(request: request) {
61 return policy(request: request)