Drop the HTML metadata cache. It’s just not needed — parsing is super-fast (a few microseconds) and it’s done on a background queue anyway.

This commit is contained in:
Brent Simmons 2019-04-01 22:27:02 -07:00
parent e98b0a1db5
commit d8efb057ff

View File

@ -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)
}