带有 json 的 ipad、平板电脑和手机的图像加载速度非常慢?

Posted

技术标签:

【中文标题】带有 json 的 ipad、平板电脑和手机的图像加载速度非常慢?【英文标题】:images loading very slowly for ipad,tablets and mobiles with json? 【发布时间】:2014-11-28 10:51:07 【问题描述】:
var customers = [
    
        "id": "1",
        "title": "Title1",
        "image_path": [
            "resources/images/cloud.png",
            "resources/images/cloud1.png"
        ],
        "content_path": "resources/json_html/customers/loud.html"
    ,
    
        "id": "2",
        "title": "Title2",
        "image_path": [
            "resources/images/onpremise.png",
            "resources/images/onpremise1.png"
        ],
        "content_path": "resources/json_html/customers/onremise.html"
    ,
    
        "id": "3",
        "title": "Title3",
        "image_path": [
            "resources/images/privatecloud.png",
            "resources/images/privatecloud1.png"
        ],
        "content_path": "resources/json_html/customers/private.html"
    ,
];
function showcustomerscontent(contentId) 
    var oldsrc = customers[jsonOldContentId - 1].image_path[0];
    var imagehtmlold = '<img src=' + oldsrc + ' id="image_opacity" class="img-responsive">';
    var idold = "imageId_" + [jsonOldContentId];

    document.getElementById(idold).innerHTML = imagehtmlold;

    var src = customers[contentId - 1].image_path[0];
    var newsrc = customers[contentId - 1].image_path[1];
    var src = newsrc;
    var imagehtml = '<img src=' + src + ' id="image_opacity" class="img-responsive">';
    var id = "imageId_" + [contentId];

    document.getElementById(id).innerHTML = imagehtml;


这里的问题是在我的页面顶部有 3 个小圆形图标,当用户单击图标时,内容必须根据用户单击的图标加载。单击的图标也必须更改为其他图标。

在我的代码中,我正在使用 JSON 加载图像,正如您在上面的代码中看到的那样。因此,当我单击任何图标时,第二个图标的加载速度非常慢——在手机、iPad、平板电脑上加载需要很长时间。我什至压缩了图标的大小,但加载仍然需要时间。那么任何人都可以告诉我正确的方向吗?

【问题讨论】:

到底慢是什么,你是异步加载JSON,还是直接加载?或者是图像本身需要时间 - 你有网址可以看吗? @axel.michel 是的,图像本身需要时间来加载...... 这不是一个明确的问题,因为加载缓慢可能有很多原因,请提供一个小提琴。 最佳猜测 - 制作一个包含所有图标和点击状态的精灵图像,onclick 只是修改位置。如果这是不可能的(因为响应图像)直接写入所有图像,通过 CSS 隐藏状态并在点击时修改它。 @axel.michel 这是一种常用的好方法,但我认为他的问题不同。 【参考方案1】:

评论上面的讨论:图片资源的加载速度取决于很多因素。但最重要的是连接速度和您将使用的硬件/客户端 - 因此不存在加速加载的简单方法。 避免闪烁的一种方法是直接加载所有图像 - 另一方面,这肯定会增加整体加载时间。正如我在上面的评论中建议的那样,我会选择基于精灵的解决方案。 following example 展示了一个可能适合的响应式精灵解决方案:

HTML

<ul class="tabs">
    <li class="tab">
        <a href="#url1" id="t1">
            <img class="spacer" src="placeholder required  to handle responsiveness" />
            <img src="the sprite itself" />
        </a>
    </li>
    [...]
</ul>

CSS

/* wraps spacer and sprite image */
.tab a 
    display: block;
    position: relative;
    overflow: hidden;
    max-width: 160px; /* your max icon size */
    width: 100%;    



.tab a img 
    border: 0;
    padding: 0;
    margin: 0;
    display: block;


.tab .spacer 
     width: 100%;
     height: auto;


.tab a img + img 
    position: absolute; 
    top: 0;
    left: 0;
    max-width: none;
    max-height: 100%;



/* positioning of the sprite elements */
#Id img 
    left: -400%;

最后,您只需在单击链接/图标时切换 CSS 类。请参阅小提琴以获取工作演示。

【讨论】:

在上面的小提琴中,只有点击的图标必须改变,剩下的必须是默认的(默认图像)..但正如我们在小提琴中看到的那样,无论我们点击哪个图像它都在改变最后所有的图像都已更改.. @User2413 这是一个演示如何使用响应式精灵而不是完整的代码副本。您要求一种优化图像加载的方法,创建小提琴是为了证明这一点。但我更新了小提琴以满足您的要求(如果我做对了)jsfiddle.net/x4g86wdz/1

以上是关于带有 json 的 ipad、平板电脑和手机的图像加载速度非常慢?的主要内容,如果未能解决你的问题,请参考以下文章

制作适应手机网页平板电脑(iPad)电脑网页的三种方法

网站图片不显示在 iPad 上

手机电脑iPad电视哪个最伤眼?

如何制作一个自适应手机电脑ipad的网页方法总结大全

苹果airplay是什么 苹果手机投屏到电脑

图像不显示在带有 iOS 9 的 iPad 2 模拟器上