Просмотр исходного кода

perf(sanitizer): don't sanitize parameters when they're no parameters

jvoisin 1 месяц назад
Родитель
Сommit
c395924fa0
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      internal/reader/sanitizer/sanitizer.go

+ 8 - 4
internal/reader/sanitizer/sanitizer.go

@@ -592,10 +592,14 @@ func sanitizeAttributes(parsedBaseUrl *url.URL, tagName string, attributes []htm
 					continue
 				}
 
-				// TODO use feedURL instead of baseURL twice.
-				parsedValueUrl, _ := url.Parse(value)
-				if cleanedURL, err := urlcleaner.RemoveTrackingParameters(parsedBaseUrl, parsedBaseUrl, parsedValueUrl); err == nil {
-					value = cleanedURL
+				// Skip the parse + RemoveTrackingParameters round trip when there
+				// is no query string to clean, which is common for <img>.
+				if strings.IndexByte(value, '?') >= 0 {
+					parsedValueUrl, _ := url.Parse(value)
+					// TODO use feedURL instead of baseURL twice.
+					if cleanedURL, err := urlcleaner.RemoveTrackingParameters(parsedBaseUrl, parsedBaseUrl, parsedValueUrl); err == nil {
+						value = cleanedURL
+					}
 				}
 			}
 		}