是否有方法,javascript脚本或任何可以允许在页面中预加载超链接的内容?例如,我希望当用户来到http://ahostel.lt/并且页面完全加载时,脚本将开始预加载导航中的其他页面(预订,地图,设施,环顾四周,[...])。因此,当用户点击任何这些超链接时,页面将立即加载。如何做到这一点?
答案 0 :(得分:2)
你可以这样做:
$(function() {
$('a').each(function() {
new Image().src = $(this).attr('href'); // or just this.href
});
});
它们不是图像,但浏览器不知道。您可能希望将其减慢一点,以免过多地阻塞连接:
$(function() {
var urls = $('a').map(function(_, a) { return a.href; }).get(0);
var i = 0;
function fetchOne() {
if (i === urls.length) return;
var img = new Image();
img.load = fetchOne;
img.src = urls[i++];
};
fetchOne();
});
编辑 - @Adam对fetch的“危险”链接提出了非常好的观点。将某些链接标记为“noPrefetch”(作为类或其他内容)可能更好,或者仅预取使用“prefetch”类明确标记的链接。
答案 1 :(得分:1)
尚未尝试过,但基于this blog post,您可以执行以下操作:
$("a").each(function(){
$.ajax({ url:$(this).attr("href"), cache:true, dataType:"text" });
});
你应该小心,但如果你有像Logoff这样的链接,那么用户就可以注销了。 See Wikipedia for more problems with prefetching
答案 2 :(得分:1)
HTML5规范中实际上已经为此提供了相关内容,但目前仅支持Firefox。
<link rel="next" href="page2.html">
将此作为非JavaScript替代方案抛弃给您。
答案 3 :(得分:0)
将此与离线存储概念相结合,您就拥有了胜利者。您可以预取所有主要导航页面,并且每个导航页面的每个登录页面都可以预取下一个导航页面,依此类推,放置在离线存储中(window.localStorage或window.sessionStorage)。对于JSON等来说会很棒。由于您的密钥可能包含时间戳指示符,因此您可以更好地控制需要过期的缓存。可能更适合于每次都不需要加载产品目录的电子商务网站。例如,您可以将JSON放在那里,并立即恢复生命。
我不确定这个考虑缓存的离线存储是否合适。想法?