optimization - 使用 Bootstrap + Google PageSpeed Insights 进行 Gatsby 优化
问题描述
我正在尝试使用 Google PageSpeed Insights/Lighthouse 优化我的网站。我目前的分数在 37 左右,但我认为这主要是由于页面所做的大量 API 请求(大约 30-40)。这是 Google PageSpeed Insights
如何解决此避免更改关键请求问题?
盖茨比浏览器.js
// Imports: Dependencies
import 'bootstrap/dist/css/bootstrap.min.css';
布局.js
// Layout
const Layout = ({ children }) => {
return (
<div className="layout">
<Helmet>
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
crossorigin="anonymous"
/>
<meta charSet="utf-8" />
<title>COVID-19</title>
<html lang={'en'} />
<link rel="canonical" href="https://orangecountycovid19.com" />
<meta name="description" content={'Orange County, CA COVID-19 Tracker'} />
</Helmet>
<div>{children}</div>
</div>
);
};
// Exports
export default Layout;
解决方案
为什么要gatsby-browser.js
在您的组件中以及<Helmet>
使用 CDN 的组件中导入 Boostrap?gatsby-browser
每次渲染时<Layout>
(我猜在大多数组件中),您都在所有页面中导入这些样式,因为您<Helmet>
被放置在<Layout>
组件中。有点乱
由于您正在使用import 'bootstrap/dist/css/bootstrap.min.css';
您的样式,因此将放置在所有站点中。从盖茨比文档:
- 创建一个全局 CSS 文件
src/styles/global.css
并将以下内容粘贴到文件中:- 在文件中导入全局 CSS 文件
gatsby-browser.js
如下: 注意:您也可以require('./src/styles/global.css')
在 gatsby-browser.js 文件中使用导入全局 CSS 文件。- 运行
gatsby-develop
以观察在您的站点中应用的全局样式。 注意:如果您使用 CSS-in-JS 来设置网站样式,则此方法不是最合适的,在这种情况下,应使用包含所有共享组件的布局页面。这将在下一个食谱中介绍。
删除您的<Helmet>
样式并确保https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css
具有相同的样式而不是bootstrap/dist/css/bootstrap.min.css
避免清除。您必须尽可能减少外部请求,至少是项目中易于替换的样式。
通过此删除,您将改进结果请求以及渲染块样式。
您的 PageSpeed Insights 还会显示大量未使用的 JavaScript(几乎 1 秒)。
推荐阅读
- java - Spring xml文件引用服务问题
- php - 避免 $ 在 php 上签名以从 json 打印数组值
- intellij-idea - 我无法在 IntelliJ Idea 中设置 Spring Social ShowCase 项目
- linux - 同时使用 wget 进行多个下载
- ubuntu-18.04 - 如何从快照应用程序中打开终端?
- python - Python编程_,看不懂这是什么代码
- android - 如何使用 android studio 和 android-box 调试 android TV 应用程序?
- python - 获取 chown():从 ini 文件运行 uwsgi 时不允许操作
- java - 输入联系人并将其带到主屏幕
- amazon-web-services - AWS S3在保存对象后获取返回对象referenceID/唯一ID