为什么 Google PageSpeed Insights 告诉我缩小 javascript 和 CSS(使用 Rails 3.2 和 JS 和 CSS 压缩)以及如何修复?

2024-02-17

我知道我可以节省的 KB 数量不多,但为了在 Google PageSpeed Insights 中获得更好的分数,从而可能获得更好的 SEO 排名,我该如何解决这个问题?

From :

Minify JavaScript for the following resources to reduce their size by 2.8KiB (2% reduction). Minifying http://d2bfamm4k6zojq.cloudfront.net/…tion-ea806932c941fb875b7512a557ebead3.js could save 2.8KiB (2% reduction) after compression.

对于我的 CSS 文件,它也告诉我同样的事情。

从我的 Production.rb 文件:

config.assets.compress = true
config.assets.js_compressor  = Uglifier.new(:mangle => true)
config.assets.css_compressor = :yui

查看 uglifier 文档/选项,我不知道如何配置它来获取最后 2KB。

任何人都知道如何让它压缩最后一点点以删除有关它的 PageSpeed 通知?也许使用 Uglifier 之外的其他压缩器?

谢谢 :-)


如果您只检查缩小后的 js,您将看到代码已缩小,但您包含的每个 js 库在顶部都有自己的版权和许可证信息(这是正确的),如以下代码片段:

/**
 * Copyright 2009 SomeThirdParty.
 * Here is the full license text and copyright
 */

如果你真的想要实现 Rails 应用程序的完全缩小,并消除 Pagespeed Insights 的 2% 额外压缩通知您可以通过以下设置来做到这一点:

config.assets.js_compressor = Uglifier.new(copyright: false)

or

config.assets.js_compressor = Uglifier.new(output: { comments: :none })

NOTE1:以上两者都会最小化您的 application.js ,而无需任何注释。

NOTE2:通过上述两种设置,uglifier 会从缩小的 js 中删除所有版权信息,从而您的应用程序达到 google pagespeed 所需的总缩小程度,并且您将获得+1 point按照你的分数。

但是,您不应避免包含您正在使用的代码的版权。大多数许可证(MIT, BSD, GPL...) 要求您在重新分发该库时保留版权和许可信息。当您允许浏览器从您的服务器或 CDN 下载库的压缩副本时当您重新分发库时。因此你应包括版权和许可信息在你的应用程序的某个地方。

How to

您可以做的一件事是收集您在应用程序上使用的 js 库的所有版权信息,并将它们全部添加到 licenses.txt 中,并将其放在您的公共文件夹中。你的公共/许可证.txt应如下所示:

/**
 * Unobtrusive scripting adapter for jQuery
 * https://github.com/rails/jquery-ujs
 *
 * Requires jQuery 1.8.0 or later.
 *
 * Released under the MIT license
 *
*/
[...and the rest copyrights here one after the other]

然后通过使用link tag指定该文件在应用程序的 html 头部的位置(layouts/application.html):

<head>
  <!-- License information of used libraries -->
  <link rel="license" href="../licenses.txt">
</head>

The rel=许可证表示:当前文档的主要内容受引用文档描述的版权许可的保护。

最后,如果您想对此更加正确,您应该在缩小的 application.js 上仅包含一条注释,以便让某人准确地找到所有版权信息(以防万一......)。为此,请在 application.js 文件顶部添加以下注释:

/*!LC
 * Copyright and Licenses: http://www.example.com/licenses.txt
*/

所以你的 application.js 可能如下所示:

/*!LC
 * Copyright and Licenses: http://www.example.com/licenses.txt
*/ 
//= require jquery
//= require jquery_ujs
//= [..rest of your requires]

NOTE:我将此评论与!LC在开始时。您需要这个才能通过regexp到丑陋者所以它会允许只有这个评论在缩小的 js 上。为此,请转到 Production.rb 并放置以下内容:

config.assets.js_compressor = Uglifier.new(output: { comments: /^!LC/ })

Uglifier 将只允许在缩小的 js 文件顶部添加 !LC 注释,您不会因为只有一条注释而收到关于页面速度洞察的警告。如果你做到了所有这些,你就完全没问题了您在页面速度洞察方面获得满分,您已经完全缩小了 .js 以实现最佳交付,并且您拥有解决任何法律问题的所有版权。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Google PageSpeed Insights 告诉我缩小 javascript 和 CSS(使用 Rails 3.2 和 JS 和 CSS 压缩)以及如何修复? 的相关文章

随机推荐