我正在开发一个eshop。在基于类别的产品页面上,我放置了一些基于javascript的过滤器。但是,如果类别具有很多产品,则会出现问题。该链接具有与我相似的功能…
这个页面多么缓慢,却超过2mb !!!
对我来说,每个产品都需要一半的K字节,但是图像是个问题。.因此,我正在寻找如何延迟加载图像的方法。由于与该网站不同,我的页面具有分页功能,因此我认为加载仅对页面可见的图像是一种解决方案。但是,probem是如何执行此操作的方法,以使其同时适用于启用javascript和非javscript的人员。我唯一的解决方案是将链接存储在css类中,以某种方式存储不可见产品的图像,如果在过滤更改后显示通过javascript图像src
…非javascript用户没有此问题,因为单击过滤器会将他们导航到其他页面…
还有其他想法吗?
这是您的三个选择:
如果这对您不起作用,我假设您仅需要有关启用JavaScript的内容的帮助,因为您说过非JavaScript用户会看到其他页面。
分页 已完成
。您在评论中说过您正在使用jQuery。有很多用于分页的jQuery插件。找到您喜欢的一个,然后使用它。它们的质量各不相同,因此您需要对其进行测试并检查其代码,但是我敢肯定那里有质量不错的代码。
在这里可以加载主页,而根本不加载任何产品,或者仅加载产品的第一页。通常,您会将所有产品放入容器中,如下所示:
<ul id='productList'>
</ul>
然后,您将具有通常的UI控件,可在结果页面之间移动。您将拥有一个服务器端资源,该资源返回可用于填充该列表的HTML代码段或JSON格式的数据。为了简单起见,我将使用HTML(尽管我可能会在生产应用程序中使用JSON,因为它会更小)。每个产品条目都是其自己的独立模块:
<li id='product-001'>
<div>This is Product 001</div>
<img src='http://www.gravatar.com/avatar/88ca83ed97a129596d6e8dd86deef994?s=32&d=identicon&r=PG'>
<div>Blurb about Product 001</div>
</li>
…然后页面返回您认为合适的任意数量。您使用Ajax请求页面,并使用JavaScript更新产品列表。既然您已经说过使用jQuery,这可以很简单:
$('#productList').load("/path/to/paging/page?start=X&count=Y");
这是一个示例原型(不是生产代码);它伪造了Ajax,因为JSBin给了我Ajax问题。
我不确定您如何进行过滤,但是如果您有一个包含产品信息的元素,则可以将图像URL存储在其data-xyz
属性中:
<div id='product-123' data-image='/images/foo.png'>
然后,当您的代码使该代码可见时,您可以轻松地img
向其中添加一个:
var prod, imgsrc, img;
prod = document.getElementById('product-123');
prod.style.display = 'block'; // Or whatever you're doing to show it
imgsrc = prod.getAttribute('data-image');
if (imgsrc) {
img = document.createElement('img');
img.src = imgsrc;
prod.appendChild(img); // You'd probably put this somewhere else, but you get the idea
prod.removeAttribute('data-image');
}
编辑 在其他地方的评论中,您说您正在使用jQuery。如果是这样,上面的翻译可能像这样:
var prod, imgsrc, img;
prod = $('#product-123');
prod.show();
imgsrc = prod.attr('data-image');
if (imgsrc) {
$("<img/>").attr('src', imgsrc).appendTo(prod); // You'd probably put this somewhere else, but you get the idea
prod.removeAttr('data-image');
}
隐藏时无需再次删除它,因为该图像已经显示,这就是为什么我们一旦使用该属性就将其删除。
我使用data-
前缀的原因是验证:从HTML5开始,您可以定义自己的data- xyz
属性,而页面仍将通过验证。在早期版本的HTML中,不允许您定义自己的属性(尽管实际上没有主要的浏览器关心),因此,如果为此使用了自己的属性,则该页面将无法验证。
)
我正在使用Mika Tuupola的jQuery延迟加载。 是否可以在每次延迟加载图像后调用函数。 我打算做的是跟踪图像的浏览次数。因此,如果图像是延迟加载的,这意味着用户已经看到了图像,我将通过在后台执行HTTP GET,将数据库中的计数器增加1。
我有一个HTML,使用 我想做的是懒惰加载图像的性能。我尝试了几个包,如react-lazyload,但它似乎并没有懒惰加载图像的方式。如果我将超文本标记语言字符串拉到React组件中,它确实有效。 延迟加载如何处理从加载的图像?我怎样才能懒散地加载图像?
Flask 通常配合装饰器使用,装饰器使用非常简单,而且使您可以将 URL 和处理它的函数 放在一起。然而这种方法也有一种不足: 这就意味着您使用装饰器的代码必须在前面导入, 否则 Flask 将无法找到您的函数。 这对于需要很快导入的应用程序来说是一个问题,这种情况可能出现在类似谷歌的 App Engine 这样的系统上。所以如果您突然发现您的引用超出了这种方法可以处理 的能力,您可以降级到中央
我试图使用jQuery懒惰加载在我的Laravel/Vue项目,但我正在努力让图像出现在我的Vue组件。我有以下img块,我认为会工作: 我确实在这里发现了另一个问题-Vue.js模板中的静态图像src-但是当我尝试该方法时,我得到了这样的结果: 因此,我切换回v-bind方法,但我得到的只是一个带有灰色边框的白色框-没有图像。但是,如果我在src属性上使用v-bind,我可以正确地看到图像。 我
我似乎不能为我的生活得到任何图像懒惰加载插件在wordpress工作。我尝试了懒负载,wp懒负载和bj懒负载。网站上的图像似乎没有一个是“懒惰加载”的。我也使用审计工具(chrome审计)测试了这个。当我删除图像(每页大约有50张图像)时,我的审计绩效和其他分数为99。当我加载图像(使用wordpress循环),我的性能下降到64. 我尝试了每一个延迟加载插件,但它们似乎都不是延迟加载。我正在本地
我想做一个reactjs页面懒惰加载图像。因此,我调用lazyLoadImages()内部的组件didMount()。我发现位于浏览器选项卡的浏览器加载指示器仍然一路旋转,直到加载所有图像。这让我认为我所做的并没有提供真正的懒惰加载图像体验。 有趣的是,如果我在setTimeout中用一个不太短的timeout参数包装lazyLoadImages(),例如100ms(不是0或甚至50ms),那么页