javascript - 减少图像加载时间和带宽使用的最有效方法

标签 javascript filesize page-load-time load-time image-optimization

我有一个巨大的图像加载在我的网站主页上,1366*690px我意识到这是巨大的,并决定考虑加快加载时间。

我首先通过 Smush.it 运行它

然后我编写了一些 JavaScript 代码来根据浏览器分辨率动态加载不同的图像:

<img id="poster" src=""/>

<script type="text/javascript">
    var width = $(window).width();

    //Attempt to lower bandwidth usage and load times by delivering a dynamic poster size
    if(width<=320) {
        $("#poster").attr('src', 'theme/images/poster/width320.jpg');
    } else if(width>320 && width<=800) {
        $("#poster").attr('src', 'theme/images/poster/width800.jpg');
    } else if(width>800 && width<=1024) {
        $("#poster").attr('src', 'theme/images/poster/width1024.jpg');
    } else if(width>1024 && width<=1280) {
        $("#poster").attr('src', 'theme/images/poster/width1280.jpg');
    } else {
        $("#poster").attr('src', 'theme/images/poster/width1366.jpg');
    }
</script>

我现在正在寻求有关如何进一步加快该过程的建议,我想我记得在某处读过,将图像分成两部分会加快页面速度,这不是为什么在从图像中制作渐变时,你把它们设为 1px 宽?(并重复)?

当前文件大小(按浏览器宽度)如下所示:

<= 320px                         ||   15.1 KB
>  320px   &&   <= 800px         ||   67.8 KB
>  800px   &&   <= 1024px        ||   101  KB
>  1024px  &&   <= 1280px        ||   142  KB
>  1280px                        ||   151  KB

注意:所有这些图像在 css 中的宽度均为 100%

我还知道一些与位深度(8,16,24,32)和aplha有关的东西 我不想将图片质量降低太多,您认为网络可以接受多少?我当前的位深度是 24,这太多了吗?

您还会如何针对网络优化此类图像?

最佳答案

使用你需要的东西。仅此而已。

如果您的网站包含需要 1MB 图像才能达到其目的的内容,那就这样吧...使用它。如果您可以使用 50KB 版本,因为它不是您内容的核心,那么就走这条路。

指南只是...对于最有效的方法的非具体建议。您需要权衡您的具体情况。您的网站需要什么才能有效?您将失去多少用户,因为他们无法(或不会)加载您的巨型网站?您是否有一些引人注目的内容可以吸引人们的关注?

现在解决这个问题,继续优化。在大多数情况下,我不会做您在问题中建议的事情,因为您正在进入过度优化的领域。但是,有很多充分的理由(例如使用移动设备)您可能希望至少有两个版本的内容可用。 (而且,甚至不要让我开始研究“视网膜”分辨率图像。)

您一开始就使用正确的图像格式吗?对于照片使用 JPEG,对于需要无损或具有 Alpha channel 的任何内容使用 PNG。我认为您会发现 PNG 上的某些位深度存在兼容性问题。

关于javascript - 减少图像加载时间和带宽使用的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599592/

相关文章:

c# - 获取在线文件 [http] 大小的最快方法是什么

java - 如何通过 Selenium 正确配置隐式/显式等待和 pageLoadTimeout?

javascript - 如何使用 jquery ajax 从 url 将变量传递到 Controller

javascript - React 状态未更新,尝试使用 ES6 语法

c - 如何从字符串中确定文件的大小

java - 防止在 selenium webdriver 测试中加载外部内容

javascript - 我们如何防止 OpenX 阻塞页面加载?

javascript - Node-RED发送多个消息只返回第一个消息

javascript通过数组引用对象

python - 从 .mat 文件转换为 .txt 文件后文件大小增加