如何使用JavaScript代码进行Pagespeed Insights API来显示我的网站的结果

时间:2019-04-04 18:45:04

标签: javascript api

我想将pagespeedinsights api集成到我的网站: http://ccit324.firebird.sheridanc.on.ca/

ive尝试将网址放入此网站中显示的js代码中 https://developers.google.com/speed/docs/insights/v5/get-started

如何将我的网站链接放入此代码中,以便PageSpeedInsight API可以正常工作。    代码:

   <script>      
   function run() {
   const url = setUpQuery();
   fetch(url)
  .then(response => response.json())
  .then(json => {

  showInitialContent(json.id);
  const cruxMetrics = {
    "First Contentful Paint": json.loadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.category,
    "First Input Delay": json.loadingExperience.metrics.FIRST_INPUT_DELAY_MS.category
  };
  showCruxContent(cruxMetrics);
  const lighthouse = json.lighthouseResult;
  const lighthouseMetrics = {
    'First Contentful Paint': lighthouse.audits['first-contentful-paint'].displayValue,
    'Speed Index': lighthouse.audits['speed-index'].displayValue,
    'Time To Interactive': lighthouse.audits['interactive'].displayValue,
    'First Meaningful Paint': lighthouse.audits['first-meaningful-paint'].displayValue,
    'First CPU Idle': lighthouse.audits['first-cpu-idle'].displayValue,
    'Estimated Input Latency': lighthouse.audits['estimated-input-latency'].displayValue
  };
  showLighthouseContent(lighthouseMetrics);
});
 }

 function setUpQuery() {
 const api = 
'https://www.googleapis.com/pagespeedonline/v5/runPagespeed';
const parameters = {
url: encodeURIComponent('https://developers.google.com')
 };
let query = `${api}?`;
for (key in parameters) {
query += `${key}=${parameters[key]}`;
 }
return query;
 }

function showInitialContent(id) {
document.body.innerHTML = '';
const title = document.createElement('h1');
title.textContent = 'PageSpeed Insights API Demo';
document.body.appendChild(title);
const page = document.createElement('p');
page.textContent = `Page tested: ${id}`;
document.body.appendChild(page);
}

function showCruxContent(cruxMetrics) {
const cruxHeader = document.createElement('h2');
cruxHeader.textContent = "Chrome User Experience Report Results";
document.body.appendChild(cruxHeader);
for (key in cruxMetrics) {
const p = document.createElement('p');
p.textContent = `${key}: ${cruxMetrics[key]}`;
document.body.appendChild(p);
}
}

 function showLighthouseContent(lighthouseMetrics) {
const lighthouseHeader = document.createElement('h2');
lighthouseHeader.textContent = "Lighthouse Results";
document.body.appendChild(lighthouseHeader);
for (key in lighthouseMetrics) {
  const p = document.createElement('p');
  p.textContent = `${key}: ${lighthouseMetrics[key]}`;
  document.body.appendChild(p);
  }
  }

 run();
</script>

1 个答案:

答案 0 :(得分:1)

如果没有 API 密钥,PageSpeed Insight 只能每隔几秒或几分钟工作一次,因为他们添加了一个冷却计时器。

所以从这里获取一个可以在没有冷却计时器的情况下发出多个请求:Get Started with the PageSpeed Insights API

您需要将其添加到“查询”请求的末尾,否则会出现“无效 API KEY”错误。

function setUpQuery() {
    const api = 'https://www.googleapis.com/pagespeedonline/v5/runPagespeed';
    const parameters = {
        url: encodeURIComponent(`http://yourwebsite.com`)
    };

    let query = `${api}?`;
    for (key in parameters) {
    query += `${key}=${parameters[key]}`;
    }

    // Add API key at the end of the query
    query += "&key=AIzaSyBuvoszTjP7QrS_aLwbIboqx8Of23As-nA"

    return query;
}

现在获取您网站的结果。一切都将在 json 变量中。

function run() {
    const url = setUpQuery();
    fetch(url)
    .then(response => response.json())
    .then(json => {
        // See https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed#response
        // to learn more about each of the properties in the response object.
        console.log(json) // ALL YOUR WEBSITE DATA WILL BE DISPLAYED IN THE CONSOLE
    });
}