| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| |
| <link rel="preconnect" href="https://www.googletagmanager.com"> |
| <script >(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': |
| new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], |
| j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= |
| 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); |
| })(window,document,'script','dataLayer','GTM-W8MVQXG');</script> |
| |
| <meta charset="utf-8"> |
| <meta name="description" content="Go is an open source programming language that makes it easy to build simple, reliable, and efficient software."> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta name="theme-color" content="#00add8"> |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans:400,500,600|Work+Sans:400,500,600|Roboto:400,500,700|Open+Sans:Source+Code+Pro|Material+Icons"> |
| <link rel="stylesheet" href="/css/styles.css"> |
| |
| <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': |
| new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], |
| j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= |
| 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); |
| })(window,document,'script','dataLayer','GTM-W8MVQXG');</script> |
| |
| <script src="/js/site.js"></script> |
| <title>Chrome Content Optimization Service Runs on Go - go.dev</title> |
| </head> |
| <body class="Site"> |
| |
| <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W8MVQXG" |
| height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> |
| |
| <header class="Site-header js-siteHeader"> |
| <div class="Banner"> |
| <div class="Banner-inner"> |
| <div class="Banner-message">Black Lives Matter</div> |
| <a class="Banner-action" |
| href="https://support.eji.org/give/153413/#!/donation/checkout" |
| target="_blank" |
| rel="noopener"> |
| Support the Equal Justice Initiative |
| </a> |
| </div> |
| </div> |
| <div class="Header Header--dark"> |
| <nav class="Header-nav"> |
| <a href="https://go.dev/"> |
| <img |
| class="js-headerLogo Header-logo" |
| src="/images/go-logo-white.svg" |
| alt="Go"> |
| </a> |
| <div class="Header-rightContent"> |
| <ul class="Header-menu"> |
| <li class="Header-menuItem "> |
| <a href="/solutions/">Why Go</a> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="/learn/">Getting Started</a> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="https://pkg.go.dev">Discover Packages</a> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="/about">About</a> |
| </li> |
| </ul> |
| <button class="Header-navOpen js-headerMenuButton Header-navOpen--white" aria-label="Open navigation."> |
| </button> |
| </div> |
| </nav> |
| |
| </div> |
| </header> |
| <aside class="NavigationDrawer js-header"> |
| <nav class="NavigationDrawer-nav"> |
| <div class="NavigationDrawer-header"> |
| <a href="https://go.dev/"> |
| <img class="NavigationDrawer-logo" src="/images/go-logo-blue.svg" alt="Go."> |
| </a> |
| </div> |
| <ul class="NavigationDrawer-list"> |
| <li class="NavigationDrawer-listItem NavigationDrawer-listItem--active"> |
| <a href="/solutions/">Why Go</a> |
| </li> |
| <li class="NavigationDrawer-listItem "> |
| <a href="/learn/">Getting Started</a> |
| </li> |
| <li class="NavigationDrawer-listItem "> |
| <a href="https://pkg.go.dev">Discover Packages</a> |
| </li> |
| <li class="NavigationDrawer-listItem "> |
| <a href="/about">About</a> |
| </li> |
| </ul> |
| </nav> |
| </aside> |
| <div class="NavigationDrawer-scrim js-scrim" role="presentation"></div> |
| <main class="SiteContent SiteContent--default"> |
| <div> |
| <div class="WhoUsesSubPage-hero--caseStudy"> |
| <div class="WhoUsesSubPage-heroInner--caseStudy"> |
| <div class="WhoUsesSubPage-heroContent--caseStudy"> |
| <div class="WhoUsesSubPage-heroText--caseStudy"> |
| |
| <div class="BreadcrumbNav"> |
| <ol class="BreadcrumbNav-inner"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="BreadcrumbNav-li "> |
| <a class="BreadcrumbNav-link" href="/solutions/"> |
| |
| Why Go |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| <li class="BreadcrumbNav-li "> |
| <a class="BreadcrumbNav-link" href="/solutions/google/"> |
| |
| Google |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| <li class="BreadcrumbNav-li active"> |
| <a class="BreadcrumbNav-link" href="/solutions/google/chrome"> |
| |
| Chrome |
| |
| </a> |
| </li> |
| |
| |
| </ol> |
| |
| </div> |
| <h1>Chrome Content Optimization Service Runs on Go</h1> |
| |
| |
| </div> |
| |
| <div class="WhoUsesSubPage-heroImg"> |
| <img src="/images/go_chrome_case_study.png" alt="Chrome"> |
| </div> |
| |
| </div> |
| </div> |
| |
| </div> |
| <article class="Article Article--solutions"> |
| |
| <div class="CaseStudy-content"> |
| <div class="CaseStudy-contentBody"> |
| <p>When the product Chrome comes to mind, you probably think solely of the |
| user-installed browser. But behind the scenes, Chrome has an extensive fleet of |
| backends. Among these is the Chrome Optimization Guide service. This service |
| forms an important basis for Chrome’s user experience strategy, operating in the |
| critical path for users, and is implemented in Go.</p> |
| |
| <p>The Chrome Optimization Guide service is designed to bring the power of Google |
| to Chrome by providing hints to the installed browser about what optimizations |
| may be performed on a page load, as well as when they can be applied most |
| effectively. It comprises a conjunction of real-time servers and batch logs |
| analysis.</p> |
| |
| <p>All Lite mode users of Chrome receive data via the service through the following |
| mechanisms: a data blob push that provides hints for well-known sites in their |
| geography, a check-in to Google servers to retrieve hints for hosts that the |
| specific user visits often, and on demand for page loads for which a hint is not |
| already on the device. Were the Chrome Optimization Guide service to suddenly |
| disappear, users might notice a dramatic change in the speed of their page loads |
| and the amount of data consumed while browsing the web.</p> |
| |
| <div class="BackgroundQuote"> |
| <p class="BackgroundQuote-body"> |
| “Given that Go was a success for us, we plan to continue to use |
| it where appropriate” |
| </p> |
| <div class="BackgroundQuote-author"> |
| <span>— Sophie Chang</span> |
| , |
| <span class="BackgroundQuote-title">Software Engineer</span> |
| </div> |
| </div> |
| |
| |
| <p>When the Chrome engineering team started building the service, only a few |
| members had comfort with Go. Most of the team was more familiar with C++, but |
| they found the complex boilerplate required to stand up a C++ server to be too |
| much. The team shared that “[they] were pretty motivated to learn Go due to its |
| simplicity, fast ramp-up, and ecosystem.” and that “[their] sense of adventure |
| was rewarded.” Millions of users rely on this service to make their Chrome |
| experience better, and choosing Go was no small decision. After their experience |
| so far, the team also shared that “given that Go was a success for us, we plan |
| to continue to use it where appropriate.”</p> |
| |
| <p>In addition to the Chrome Optimization Guide team, engineering teams across |
| Google have adopted Go in their development process. Read about how the <a href="/solutions/google/coredata/">Core |
| Data Solutions</a> and <a href="/solutions/google/firebase/">Firebase |
| Hosting</a> teams use Go to build fast, reliable, |
| and efficient software at scale.</p> |
| |
| <p><em>Editorial note: The Go team would like to thank Sophie Chang for her |
| contributions to this story.</em></p> |
| |
| </div> |
| <div class="CaseStudy-contentAside"> |
| <div class="CaseStudy-aboutBlock"> |
| |
| <img src="/images/logos/chrome.svg" class="CaseStudy-aboutBlockImg" alt="Chrome"> |
| <h3 class="CaseStudy-aboutBlockTitle"> |
| About Chrome |
| </h3> |
| |
| <p class="CaseStudy-aboutBlockBody"><p>Google Chrome is a more simple, secure, and faster web browser than ever, |
| with Google’s smarts built-in.</p> |
| |
| <p>In this case study, the Chrome Optimization Guide |
| team shared how they experimented with Go, ramped up quickly, and their plans to |
| use Go going forward.</p> |
| </p> |
| |
| </div> |
| </div> |
| </div> |
| |
| </article> |
| </div> |
| </main> |
| <footer class="Site-footer"> |
| <div class="Footer"> |
| <div class="Container"> |
| <div class="Footer-links"> |
| <div class="Footer-linkColumn"> |
| |
| <a href="/solutions/" class="Footer-link Footer-link--primary"> |
| Why Go |
| </a> |
| |
| |
| <a href="/solutions/#use-cases" class="Footer-link"> |
| Use Cases |
| </a> |
| |
| |
| |
| <a href="/solutions/#case-studies" class="Footer-link"> |
| Case Studies |
| </a> |
| |
| |
| </div> |
| <div class="Footer-linkColumn"> |
| |
| <a href="/learn/" class="Footer-link Footer-link--primary"> |
| Getting Started |
| </a> |
| |
| |
| <a href="https://play.golang.org" class="Footer-link"> |
| Playground |
| </a> |
| |
| |
| |
| <a href="https://tour.golang.org" class="Footer-link"> |
| Tour |
| </a> |
| |
| |
| |
| <a href="https://stackoverflow.com/questions/tagged/go?tab=Newest" class="Footer-link"> |
| Stack Overflow |
| </a> |
| |
| |
| </div> |
| <div class="Footer-linkColumn"> |
| |
| <a href="https://pkg.go.dev" class="Footer-link Footer-link--primary"> |
| Discover Packages |
| </a> |
| |
| </div> |
| <div class="Footer-linkColumn"> |
| |
| <a href="/about" class="Footer-link Footer-link--primary"> |
| About |
| </a> |
| |
| |
| <a href="https://golang.org/dl/" class="Footer-link"> |
| Download |
| </a> |
| |
| |
| |
| <a href="https://blog.golang.org" class="Footer-link"> |
| Blog |
| </a> |
| |
| |
| |
| <a href="https://github.com/golang/go/issues" class="Footer-link"> |
| Issue Tracker |
| </a> |
| |
| |
| |
| <a href="https://golang.org/doc/devel/release.html" class="Footer-link"> |
| Release Notes |
| </a> |
| |
| |
| |
| <a href="https://blog.golang.org/go-brand" class="Footer-link"> |
| Brand Guidelines |
| </a> |
| |
| |
| |
| <a href="https://golang.org/conduct" class="Footer-link"> |
| Code of Conduct |
| </a> |
| |
| |
| </div> |
| <div class="Footer-linkColumn"> |
| |
| <a href="https://www.twitter.com/golang" class="Footer-link Footer-link--primary"> |
| Connect |
| </a> |
| |
| |
| <a href="https://www.twitter.com/golang" class="Footer-link"> |
| Twitter |
| </a> |
| |
| |
| |
| <a href="https://github.com/golang" class="Footer-link"> |
| GitHub |
| </a> |
| |
| |
| |
| <a href="https://invite.slack.golangbridge.org/" class="Footer-link"> |
| Slack |
| </a> |
| |
| |
| |
| <a href="https://reddit.com/r/golang" class="Footer-link"> |
| r/golang |
| </a> |
| |
| |
| |
| <a href="https://www.meetup.com/pro/go" class="Footer-link"> |
| Meetup |
| </a> |
| |
| |
| |
| <a href="https://golangweekly.com/" class="Footer-link"> |
| Golang Weekly |
| </a> |
| |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="Footer"> |
| <div class="Container Container--fullBleed"> |
| <div class="Footer-bottom"> |
| <img class="Footer-gopher" src="/images/gophers/pilot-bust.svg" alt="The Go Gopher"> |
| <ul class="Footer-listRow"> |
| <li class="Footer-listItem"> |
| <a href="/copyright">Copyright</a> |
| </li> |
| <li class="Footer-listItem"> |
| <a href="/tos">Terms of Service</a> |
| </li> |
| <li class="Footer-listItem"> |
| <a href="http://www.google.com/intl/en/policies/privacy/" |
| target="_blank" |
| rel="noopener"> |
| Privacy Policy |
| </a> |
| </li> |
| <li class="Footer-listItem"> |
| <a |
| href="https://golang.org/s/discovery-feedback" |
| target="_blank" |
| rel="noopener" |
| > |
| Report an Issue |
| </a> |
| </li> |
| <li class="Footer-listItem"> |
| <a |
| href="https://golang.org" |
| target="_blank" |
| rel="noopener" |
| >golang.org |
| </a> |
| </li> |
| </ul> |
| <a class="Footer-googleLogo" target="_blank" href="https://google.com" rel="noopener"> |
| <img class="Footer-googleLogoImg" src="/images/google-white.png" alt="Google logo"> |
| </a> |
| </div> |
| </div> |
| </div> |
| <script src="/js/carousels.js"></script> |
| <script src="/js/searchBox.js"></script> |
| <script src="/js/misc.js"></script> |
| <script src="/js/hats.js"></script> |
| </footer> |
| </body> |
| </html> |