zoukankan      html  css  js  c++  java
  • chrome网络栈 develop tools 查看缓存

    所有chrome内部使用协议查看:

    chrome://chrome-urls/

    chrome缓存查看器:

    http://www.nirsoft.net/utils/chrome_cache_view.html

    Chrome DevTools Frontend 运行原理浅析

    深入理解 Chrome DevTools

    D:develectron7srcurlurl_constants.cc 放着http https file等协议定义。

    获取缓存(基于chrome 66)

    loop异步获取所有cache:src eturl_requestview_cache_helper.cc

    int ViewCacheHelper::DoLoop(int result) {
      DCHECK(next_state_ != STATE_NONE);
    
      int rv = result;
      do {
        State state = next_state_;
        next_state_ = STATE_NONE;
        switch (state) {
          case STATE_GET_BACKEND:
            DCHECK_EQ(OK, rv);
            rv = DoGetBackend();
            break;
          case STATE_GET_BACKEND_COMPLETE:
            rv = DoGetBackendComplete(rv);
            break;
          case STATE_OPEN_NEXT_ENTRY:
            DCHECK_EQ(OK, rv);
            rv = DoOpenNextEntry();
            break;
          case STATE_OPEN_NEXT_ENTRY_COMPLETE:
            rv = DoOpenNextEntryComplete(rv);
            break;
          case STATE_OPEN_ENTRY:
            DCHECK_EQ(OK, rv);
            rv = DoOpenEntry();
            break;
          case STATE_OPEN_ENTRY_COMPLETE:
            rv = DoOpenEntryComplete(rv);
            break;
          case STATE_READ_RESPONSE:
            DCHECK_EQ(OK, rv);
            rv = DoReadResponse();
            break;
          case STATE_READ_RESPONSE_COMPLETE:
            rv = DoReadResponseComplete(rv);
            break;
          case STATE_READ_DATA:
            DCHECK_EQ(OK, rv);
            rv = DoReadData();
            break;
          case STATE_READ_DATA_COMPLETE:
            rv = DoReadDataComplete(rv);
            break;
    
          default:
            NOTREACHED() << "bad state";
            rv = ERR_FAILED;
            break;
        }
      } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);
    
      if (rv != ERR_IO_PENDING)
        HandleResult(rv);
    
      return rv;
    }
    int ViewCacheHelper::DoGetBackend() {
      next_state_ = STATE_GET_BACKEND_COMPLETE;
    
      if (!context_->http_transaction_factory())
        return ERR_FAILED;
    
      HttpCache* http_cache = context_->http_transaction_factory()->GetCache();
      if (!http_cache)
        return ERR_FAILED;
    
      return http_cache->GetBackend(
          &disk_cache_, base::Bind(&ViewCacheHelper::OnIOComplete,
                                   base::Unretained(this)));
    }

    mem_backend_impl.cc从iter里面遍历出某项,里面包含url,对应的数据entry_iter->second;:

    class MemBackendImpl::MemIterator final : public Backend::Iterator {
     public:
      explicit MemIterator(base::WeakPtr<MemBackendImpl> backend)
          : backend_(backend) {}
    
      int OpenNextEntry(Entry** next_entry,
                        const CompletionCallback& callback) override {
        if (!backend_)
          return net::ERR_FAILED;
    
        if (!backend_keys_) {
          backend_keys_ = std::make_unique<Strings>(backend_->entries_.size());
          for (const auto& iter : backend_->entries_)
            backend_keys_->push_back(iter.first);
          current_ = backend_keys_->begin();
        } else {
          current_++;
        }
    
        while (true) {
          if (current_ == backend_keys_->end()) {
            *next_entry = nullptr;
            backend_keys_.reset();
            return net::ERR_FAILED;
          }
    
          const auto& entry_iter = backend_->entries_.find(*current_);
          if (entry_iter == backend_->entries_.end()) {
            // The key is no longer in the cache, move on to the next key.
            current_++;
            continue;
          }
    
          entry_iter->second->Open();
          *next_entry = entry_iter->second;
          return net::OK;
        }
      }

     chrome 75:

    chrome协议:D:develectron7srccontentpubliccommonurl_constants.cc

    // Copyright (c) 2012 The Chromium Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    
    #include "build/build_config.h"
    #include "content/public/common/url_constants.h"
    
    namespace content {
    
    // Before adding new chrome schemes please check with security@chromium.org.
    // There are security implications associated with introducing new schemes.
    const char kChromeDevToolsScheme[] = "devtools";
    const char kChromeErrorScheme[] = "chrome-error";
    const char kChromeUIScheme[] = "chrome";
    const char kGuestScheme[] = "chrome-guest";
    const char kViewSourceScheme[] = "view-source";
    #if defined(OS_CHROMEOS)
    const char kExternalFileScheme[] = "externalfile";
    #endif
    const char kGoogleChromeScheme[] = "googlechrome";
    
    const char kChromeUIAppCacheInternalsHost[] = "appcache-internals";
    const char kChromeUIIndexedDBInternalsHost[] = "indexeddb-internals";
    const char kChromeUIBlobInternalsHost[] = "blob-internals";
    const char kChromeUIBrowserCrashHost[] = "inducebrowsercrashforrealz";
    const char kChromeUIDinoHost[] = "dino";
    const char kChromeUIGpuHost[] = "gpu";
    const char kChromeUIHistogramHost[] = "histograms";
    const char kChromeUIMediaInternalsHost[] = "media-internals";
    const char kChromeUIMemoryExhaustHost[] = "memory-exhaust";
    const char kChromeUINetworkErrorHost[] = "network-error";
    const char kChromeUINetworkErrorsListingHost[] = "network-errors";
    const char kChromeUIProcessInternalsHost[] = "process-internals";
    const char kChromeUIResourcesHost[] = "resources";
    const char kChromeUIServiceWorkerInternalsHost[] = "serviceworker-internals";
    const char kChromeUITracingHost[] = "tracing";
    const char kChromeUIWebRTCInternalsHost[] = "webrtc-internals";
    
    const char kChromeUIBadCastCrashURL[] = "chrome://badcastcrash/";
    const char kChromeUICheckCrashURL[] = "chrome://checkcrash/";
    const char kChromeUIBrowserCrashURL[] = "chrome://inducebrowsercrashforrealz/";
    const char kChromeUIBrowserUIHang[] = "chrome://uithreadhang/";
    const char kChromeUICrashURL[] = "chrome://crash/";
    const char kChromeUIDelayedBrowserUIHang[] = "chrome://delayeduithreadhang/";
    const char kChromeUIDumpURL[] = "chrome://crashdump/";
    const char kChromeUIGpuCleanURL[] = "chrome://gpuclean/";
    const char kChromeUIGpuCrashURL[] = "chrome://gpucrash/";
    const char kChromeUIGpuHangURL[] = "chrome://gpuhang/";
    const char kChromeUIHangURL[] = "chrome://hang/";
    const char kChromeUIKillURL[] = "chrome://kill/";
    const char kChromeUIMemoryExhaustURL[] = "chrome://memory-exhaust/";
    const char kChromeUINetworkErrorURL[] = "chrome://network-error/";
    const char kChromeUINetworkErrorsListingURL[] = "chrome://network-errors/";
    const char kChromeUIPpapiFlashCrashURL[] = "chrome://ppapiflashcrash/";
    const char kChromeUIPpapiFlashHangURL[] = "chrome://ppapiflashhang/";
    const char kChromeUIProcessInternalsURL[] = "chrome://process-internals";
    #if defined(OS_ANDROID)
    const char kChromeUIGpuJavaCrashURL[] = "chrome://gpu-java-crash/";
    #endif
    #if defined(OS_WIN)
    const char kChromeUIBrowserHeapCorruptionURL[] =
        "chrome://inducebrowserheapcorruption/";
    const char kChromeUIHeapCorruptionCrashURL[] = "chrome://heapcorruptioncrash/";
    #endif
    #if defined(ADDRESS_SANITIZER)
    const char kChromeUICrashHeapOverflowURL[] = "chrome://crash/heap-overflow";
    const char kChromeUICrashHeapUnderflowURL[] = "chrome://crash/heap-underflow";
    const char kChromeUICrashUseAfterFreeURL[] = "chrome://crash/use-after-free";
    
    #if defined(OS_WIN)
    const char kChromeUICrashCorruptHeapBlockURL[] =
        "chrome://crash/corrupt-heap-block";
    const char kChromeUICrashCorruptHeapURL[] = "chrome://crash/corrupt-heap";
    #endif  // OS_WIN
    #endif  // ADDRESS_SANITIZER
    
    #if DCHECK_IS_ON()
    const char kChromeUICrashDcheckURL[] = "chrome://crash/dcheck";
    #endif
    
    // This error URL is loaded in normal web renderer processes, so it should not
    // have a chrome:// scheme that might let it be confused with a WebUI page.
    const char kUnreachableWebDataURL[] = "chrome-error://chromewebdata/";
    
    const char kBlockedURL[] = "about:blank#blocked";
    
    const char kChromeUIResourcesURL[] = "chrome://resources/";
    const char kChromeUIShorthangURL[] = "chrome://shorthang/";
    
    }  // namespace content
    View Code

    chrome://view-http-cache/ 支持看缓存

  • 相关阅读:
    PAT 甲级 1074 Reversing Linked List (25 分)(链表部分逆置,结合使用双端队列和栈,其实使用vector更简单呐)
    (转载)文献可视化--vosviewer入门
    给出先序和中序,给一个数找到位置并输出它左子树里最大的数
    PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)
    python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
    第一章 概述
    Mybatis最入门---数据库的下载与安装
    前端页面——Cookie与Session有什么差别
    有限状态机(FSM)的Java 演示
    windows使用技巧和工具(后面可能更新linux)
  • 原文地址:https://www.cnblogs.com/bigben0123/p/13552791.html
Copyright © 2011-2022 走看看