From d8efb057ff0417c2e80e774f97150a7046f1cec6 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Mon, 1 Apr 2019 22:27:02 -0700 Subject: [PATCH] =?UTF-8?q?Drop=20the=20HTML=20metadata=20cache.=20It?= =?UTF-8?q?=E2=80=99s=20just=20not=20needed=20=E2=80=94=C2=A0parsing=20is?= =?UTF-8?q?=20super-fast=20(a=20few=20microseconds)=20and=20it=E2=80=99s?= =?UTF-8?q?=20done=20on=20a=20background=20queue=20anyway.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HTMLMetadata/HTMLMetadataDownloader.swift | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/NetNewsWire/HTMLMetadata/HTMLMetadataDownloader.swift b/NetNewsWire/HTMLMetadata/HTMLMetadataDownloader.swift index 5727bfa47..1e7b325d1 100644 --- a/NetNewsWire/HTMLMetadata/HTMLMetadataDownloader.swift +++ b/NetNewsWire/HTMLMetadata/HTMLMetadataDownloader.swift @@ -12,20 +12,16 @@ import RSParser struct HTMLMetadataDownloader { - static var metadataCache = [String: RSHTMLMetadata]() static let serialDispatchQueue = DispatchQueue(label: "HTMLMetadataDownloader") static func downloadMetadata(for url: String, _ callback: @escaping (RSHTMLMetadata?) -> Void) { - guard let actualURL = URL(string: url) else { callback(nil) return } downloadUsingCache(actualURL) { (data, response, error) in - if let data = data, !data.isEmpty, let response = response, response.statusIsOK, error == nil { - let urlToUse = response.url ?? actualURL let parserData = ParserData(url: urlToUse.absoluteString, data: data) parseMetadata(with: parserData, callback) @@ -41,22 +37,8 @@ struct HTMLMetadataDownloader { } private static func parseMetadata(with parserData: ParserData, _ callback: @escaping (RSHTMLMetadata?) -> Void) { - serialDispatchQueue.async { - - let md5String = (parserData.data as NSData).rs_md5HashString() - if let md5String = md5String, let cachedMetadata = metadataCache[md5String] { - DispatchQueue.main.async { - callback(cachedMetadata) - } - return - } - let htmlMetadata = RSHTMLMetadataParser.htmlMetadata(with: parserData) - if let md5String = md5String { - metadataCache[md5String] = htmlMetadata - } - DispatchQueue.main.async { callback(htmlMetadata) }