我将会有很多图像,并试图找到最有效的方式来存储这些图像,以保持页面的活泼。
到目前为止,我只想到了两种方法:使用javascript加载picture = new Image(); picture.src = "file.jpg";
并根据需要将其追加/删除到页面,或加载到<img>
并设置display:none
。
还有其他选择吗?什么被认为是最好的方法?
答案 0 :(得分:2)
照片库的最佳方式(如果你正在建造的那些)通常是有几种尺寸的图像,至少有两种:
由于人们经常从已经显示小型/快速加载版本的页面中获取详细图像,因此已经在浏览器缓存中,您可以做一些小技巧并获得即时照片,而无需预加载任何内容。
它是这样的:
在详细信息页面上,您将在图像标记中显示高度压缩的小图像,该图像标记具有较大详细版本的尺寸。然后使用附加new Image()
事件的onload
在后台加载更大的详细版本,将带有小型压缩版本的图像标记源更改为大型详细版本。
它看起来很棒,工作速度快,用户会爱你;)
PS:存储图像的最佳方式是浏览器缓存,而不是js或DOM,所以如果你真的希望预加载图像,这通常是一种不好的做法(有时可能需要),请进行浏览器提取它们在后台通过包含一个css文件来引用它,这些文件在未应用于站点可视区域的样式中引用它们。
答案 1 :(得分:1)
我不确定“效率”,但最合乎逻辑的方法是不使用JavaScript加载图像(如果禁用JavaScript则无用)或通过display属性将图像设置为隐藏(同样,并且浏览器可能只是加载图像。)
因此,一个明智的建议是使用无聊的旧分页和每页显示'n'图像。但是,要使其更新,您可以使用“lazy”(a.k.a。“deferred”)加载并在用户滚动时通过Ajax加载其他页面内容。但是,如果禁用JavaScript等,这会优雅地降级为标准的“分页”行为。
此操作的完美示例是Google的image search,如果您search here on StackOverflow,您会看到有关可能的实施的讨论等。
答案 2 :(得分:0)
最好以你拥有它的方式使用javascript,然后根据需要将它添加到DOM,而不是先将它添加到DOM然后隐藏它,因为DOM操作速度慢得多,你可能不会使用一些图像