为什么Google PageSpeed抱怨Retina图片?

jnb*_*bdz 6 performance image pagespeed

我正在响应网站.我有代码为屏幕大小加载正确的图像大小.

我面临的问题是我正在为一些移动设备使用Retina图像.这意味着客户端下载的图像具有更大的尺寸.现在谷歌的网页速度正在抱怨说我应该优化我的图像.但问题是,如果我减小图像的大小,我将失去视网膜显示的质量.

Google Pagespeed不支持Retina图像吗?有没有办法告诉Google Pagespeed这些是视网膜图像?

或者Google是否有针对Retina图像的最佳做法?

Vin*_*nce -1

我发现 Google PageSpeed 即使在最好的情况下也有点不稳定。我将测试一些结果,结果为 88/100,5 分钟后结果为 95/100,没有任何变化。

我认为关于 Google PageSpeed 的最佳实践是确保:

1)拥有一个设计完美的标题,涵盖了 Google 喜欢看到的所有小事情。

<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"> <!--<![endif]-->
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <meta name="author" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <!-- Favicons -->
    <link rel="shortcut icon" href="/img/icons/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/img/icons/favicon.ico" type="image/x-icon">

    <!-- App Screen / Icons -->
    <!-- Specifying a Webpage Icon for Web Clip
        Ref: https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html -->
    <link rel="apple-touch-icon" href="/img/icons/sptouch-icon-iphone.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/img/icons/touch-icon-ipad.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/img/icons/touch-icon-iphone-retina.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/img/icons/touch-icon-ipad-retina.png">

    <!-- iOS web-app metas : hides Safari UI Components and Changes Status Bar Appearance -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">

    <!-- Startup image for web apps -->
    <link rel="apple-touch-startup-image" href="/img/icons/ipad-landscape.png" media="screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape)">
    <link rel="apple-touch-startup-image" href="/img/icons/ipad-portrait.png" media="screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait)">
    <link rel="apple-touch-startup-image" href="/img/icons/iphone.png" media="screen and (max-device-width: 320px)">

    <!--
    HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries.
    WARNING: Respond.js doesn't work if you view the page via file://
    -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
Run Code Online (Sandbox Code Playgroud)

2) Base64 将任何静态图像直接编码到其 img 标签中,这样您仍然可以在它们上使用缩放 CSS 代码,而不必处理诸如丢失或错误设置过期标头之类的问题。(当您还在 Apache 服务器上运行 Google mod_pagespeed 时,这是一个问题。)

3)在上传之前压缩所有其他图像,无论其类型如何。

4) 使用页面底部的 onload JavaScript 函数来加载所有 CSS 和 JS 文件,如下所示。

window.onload = function(){
    function loadjscssfile(filename, filetype) {
        if(filetype == "js") {
            var cssNode = document.createElement('script');
            cssNode.setAttribute("type", "text/javascript");
            cssNode.setAttribute("src", filename);
        } else if(filetype == "css") {
            var cssNode = document.createElement("link");
            cssNode.setAttribute("rel", "stylesheet");
            cssNode.setAttribute("type", "text/css");
            cssNode.setAttribute("href", filename);
        }
        if(typeof cssNode != "undefined") {
            var h = document.getElementsByTagName("head")[0];
            h.parentNode.insertBefore(cssNode, h);
        }
    }
    loadjscssfile("//fonts.googleapis.com/css?family=Open+Sans:300&amp;subset=latin,cyrillic-ext,latin-ext,cyrillic,greek-ext,greek,vietnamese", "css");
    loadjscssfile("//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css", "css");
    loadjscssfile("/css/style.css", "css");
    loadjscssfile("//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", "js");
    loadjscssfile("//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js", "js");
};
Run Code Online (Sandbox Code Playgroud)

除了使用 Yahoo 的 Yslow 进行的测试之外,不用担心。为了达到 100/100,你会费尽心思好几天,而这些工具并不完美。尽力而为,并将学到的知识运用到下一个项目中。

  • 这是有用的信息,但它并没有回答有关视网膜图像的问题以及 Google PageSpeed 为提供这些图像而评估的惩罚。 (6认同)