summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorjkarlin <jkarlin@chromium.org>2016-03-25 11:36:19 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-25 18:38:00 +0000
commit5152e48e43339dbe3013b647c00bfff4867eb087 (patch)
tree72535dff5169e99d18db812cc49d0523fe2d7988 /net
parent4a5dd80de434040fa64d2d2d4b35474f8c9f5f70 (diff)
downloadchromium_src-5152e48e43339dbe3013b647c00bfff4867eb087.zip
chromium_src-5152e48e43339dbe3013b647c00bfff4867eb087.tar.gz
chromium_src-5152e48e43339dbe3013b647c00bfff4867eb087.tar.bz2
Break down HTTPCache.Result metric by resource type
We'd like to know how often different resource types are cached and revalidated, so this CL adds cache pattern metrics for common resource types. Note that the resource type is a guess based on the URL's path. There will be many missed resources but I anticipate the fraction of false positives will be low. BUG=596569 Review URL: https://codereview.chromium.org/1824713002 Cr-Commit-Position: refs/heads/master@{#383319}
Diffstat (limited to 'net')
-rw-r--r--net/http/http_cache_transaction.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc
index 38da8f3..178df98 100644
--- a/net/http/http_cache_transaction.cc
+++ b/net/http/http_cache_transaction.cc
@@ -2704,6 +2704,39 @@ void HttpCache::Transaction::RecordHistograms() {
cache_->mode() != NORMAL || request_->method != "GET") {
return;
}
+
+ std::string mime_type;
+ if (GetResponseInfo()->headers &&
+ GetResponseInfo()->headers->GetMimeType(&mime_type)) {
+ // Record the cache pattern by resource type. The type is inferred by
+ // response header mime type, which could be incorrect, so this is just an
+ // estimate.
+ if (mime_type == "text/html" && (request_->load_flags & LOAD_MAIN_FRAME)) {
+ UMA_HISTOGRAM_ENUMERATION(std::string("HttpCache.Pattern.MainFrameHTML"),
+ transaction_pattern_, PATTERN_MAX);
+ } else if (mime_type == "text/html") {
+ UMA_HISTOGRAM_ENUMERATION(
+ std::string("HttpCache.Pattern.NonMainFrameHTML"),
+ transaction_pattern_, PATTERN_MAX);
+ } else if (mime_type == "text/css") {
+ UMA_HISTOGRAM_ENUMERATION(std::string("HttpCache.Pattern.CSS"),
+ transaction_pattern_, PATTERN_MAX);
+ } else if (base::StartsWith(mime_type, "image/",
+ base::CompareCase::SENSITIVE)) {
+ UMA_HISTOGRAM_ENUMERATION(std::string("HttpCache.Pattern.Image"),
+ transaction_pattern_, PATTERN_MAX);
+ } else if (base::EndsWith(mime_type, "javascript",
+ base::CompareCase::SENSITIVE) ||
+ base::EndsWith(mime_type, "ecmascript",
+ base::CompareCase::SENSITIVE)) {
+ UMA_HISTOGRAM_ENUMERATION(std::string("HttpCache.Pattern.JavaScript"),
+ transaction_pattern_, PATTERN_MAX);
+ } else if (mime_type.find("font") != std::string::npos) {
+ UMA_HISTOGRAM_ENUMERATION(std::string("HttpCache.Pattern.Font"),
+ transaction_pattern_, PATTERN_MAX);
+ }
+ }
+
UMA_HISTOGRAM_ENUMERATION(
"HttpCache.Pattern", transaction_pattern_, PATTERN_MAX);
if (transaction_pattern_ == PATTERN_NOT_COVERED)