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 {
28 private func cacheable(response: HTTPURLResponse) -> Bool {
30 guard let cc = response.allHeaderFields["Cache-Control"] as? String,
31 let _ = cc.lowercased().range(of: "no-store") else {
39 private func cacheable(request: URLRequest) -> Bool {
41 guard let cc: String = request.allHTTPHeaderFields?["Cache-Control"] else {
46 if let _ = cc.lowercased().range(of: "no-store") {
51 if let _ = cc.lowercased().range(of: "no-cache") {
59 private func policy(request: URLRequest) -> URLCache.StoragePolicy {
61 if let scheme = request.url?.scheme?.lowercased(),
64 return .allowedInMemoryOnly
70 func cacheStoragePolicy(for request: URLRequest, response: HTTPURLResponse) -> URLCache.StoragePolicy {
72 if cacheable(status: response.statusCode),
73 cacheable(response: response),
74 cacheable(request: request) {
76 return policy(request: request)