【问题标题】:"Infinite" or "smart" srcset when using server-side resizing?使用服务器端调整大小时“无限”或“智能”srcset?
【发布时间】:2015-06-21 22:15:49
【问题描述】:

我正在使用服务器端图像通过<img src="converter/500w/picture.jpg"> 等 URL 动态调整大小。这意味着我可以提供几乎无限数量的图像尺寸。现在我正在使用<img srcset="...">(以及<picture> 标签)来提供各种或多或少随机选择的图像尺寸。然而,这会导致大量的标记,而且不是很灵活。

  1. 是否可以使用srcset(或其他 HTML 标记)告诉浏览器如何请求任意大小的图像?如果没有,是否可以在所有浏览器中可靠地使用 JavaScript/jQuery 来做到这一点?

  2. 是否可以明智地决定在您的 srcset 中包含哪些尺寸,或者您是否应该只包含从小到大/原始的 5-10 个分辨率?我在想与你的断点相关的宽度是很好的候选者,但这并没有考虑到高 DPI 设备。

我意识到“无限”srcset 是有代价的。服务器上的处理可能很繁重,但这在很大程度上取决于您的访问者(屏幕规格的数量和变化)。磁盘空间也是一个问题,但可以通过垃圾收集来缓解(尽管这会增加第一个问题的影响)。不过,我想知道这是否可能,如果没有,是否有明智的分辨率选择。

【问题讨论】:

    标签: html srcset


    【解决方案1】:

    不,你不能告诉浏览器一个特定的模式来请求不同的候选人。我也怀疑生成无限数量的候选图像是否有用。

    您可以使用客户端为您完成工作的东西是以下脚本: https://github.com/aFarkas/lazysizes/tree/gh-pages/plugins/rias

    如果您有这么多资源,我还强烈建议您向 Retina 设备提供更高压缩率的图像。这可以使用上面提到的 RIaS 插件(参见文档)或使用“压缩图片模式”来完成:

    <picture>
    <!--[if IE 9]><video style="display: none;"><![endif]-->
        <source
            srcset="image-w1600-q50.jpg 1600w,
                image-w1440-q50.jpg 1440w,
                image-w1200-q50.jpg 1200w,
                image-w800-q50.jpg 800w,
                image-w600-q50.jpg 600w,
                image-w400-q50.jpg 400w"
            sizes="(your sizes), 100vw"
            media="(-webkit-min-device-pixel-ratio: 1.9),
                (min-resolution: 1.9dppx)" />
        <source
            srcset="w1600-q80.jpg 1600w,
                    image-w1440-q80.jpg 1440w,
                    image-w1200-q80.jpg 1200w,
                    image-w800-q80.jpg 800w,
                    image-w600-q80.jpg 600w,
                    image-w400-q80.jpg 400w"
            sizes="(your sizes), 100vw" />
    <!--[if IE 9]></video><![endif]-->
    <img
        src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
        sizes="(your sizes), 100vw"
        alt="picture but without artdirection" />
    </picture>
    

    【讨论】:

    • 有趣的解决方案。 “压缩图片模式”是否记录在此名称下的任何地方?
    • 还有,你知道浏览器是如何选择显示哪张图片的吗?例如。如果它知道布局宽度将是 700px,它会选择 800px 还是 600px 版本?我们能否以某种方式告诉它使用分辨率更高(但压缩质量更低)的版本,以便更好地缩小比例?例如。通过在 srcset 中“作弊”,并将 1600px 的图像作为 800w 出售..
    • 关于作弊:此技术应谨慎使用,因为浏览器算法被欺骗并使用错误的值进行操作,这可能导致不可预测的不良结果。 (github.com/aFarkas/lazysizes/tree/gh-pages/plugins/…),另见:github.com/ResponsiveImagesCG/picture-element/issues/273
    • 也许是在 size 属性中作弊?还是有同样的潜在风险?
    猜你喜欢
    • 2016-01-25
    • 2013-04-30
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2011-01-06
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多