css - 在 HTML 中划分大背景图像是否有助于性能/加载/SEO?

标签 css html performance seo

我有一张大 (1920x1080) 图像,我想用作背景。该图像的文件大小并不大 (>180Kb)。

是将这张图片剪切成 3 部分并分别加载还是一张更大的图片更好?是否存在渲染一张大图片或 3 张小图片的性能问题?浏览器加载 3 张小图片会更快吗?它会影响搜索引擎机器人对它的评价吗?

最佳答案

如果您想使用 background-image 加快页面加载速度异步加载,您可以使用以下技巧通过 javascript 来完成(我已经多次使用这个技巧):

从您的 css 和 html 中删除图像,然后创建一个 javascript 函数来预加载您的图像并可选择显示加载叠加层。然后你可以做这样的事情(jQuery):

var backgroundImageUrl = "PathToYourBackgroundImage.png";

$(function() {
    PreLoadOverlayImage(backgroundImageUrl);        
});

// Preloads the image from the given url
// and displays a loading overlay while doing so
function PreLoadOverlayImage(url) {
    var html = "<img class='preloadingImg' src='" + url + "' style='display:none' />";

    $("body").append(html);

    // Self coded function, displays a modal loading screen over the full document
    // to disable interaction while it is loading, this is optional
    $("body").showLoading();
    $(".preloadingImg").load(function () {
        $(".preloadingImg").remove();

        // Remove the modal loading overlay
        $("body").hideLoading();

        // Display background image
        $("body").css("background-image", backgroundImageUrl);
    });
}

它使用浏览器的缓存功能。浏览器获取您正在加载的图像的 url 以确定它是否已经在过去加载过。如果 url 已经为浏览器所知,它将加载缓存的图像,而不是从服务器重新下载它。因此,当您在加载 <img> 后将其指定为您 body 的背景时它将立即加载。

关于css - 在 HTML 中划分大背景图像是否有助于性能/加载/SEO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20698855/

相关文章:

sql-server - 索引如何在 SQL 用户定义类型 (UDT) 上工作?

javascript - 选中时如何为星码赋予悬停效果?

jquery - 将 A 标签替换为任何其他标签

javascript - 重新应用 jquery 到克隆的对象

javascript - 设置 src ="id"iframe 通过 url.com/id 获取 src

performance - MySQL 查询多对多关系 : unions?

javascript - 为视频创建非常大的 Sprite 表

jquery - 出现粘性导航时页面跳转

php,提交后使用同一页面的表单

java - 在数组中多次存储相同的引用项,一次更改是否会影响所有引用项?