【发布时间】:2012-01-24 15:17:40
【问题描述】:
我在使用 facebook 时发现以下功能附加到其左侧垂直菜单中。
- 页面加载速度如此之快
- 页面确实启用了后退按钮
- 只有部分页面重新加载。
任何人都可以在“如何实现它???”中提出一些想法
【问题讨论】:
-
“只有部分页面重新加载”是 ajax 请求。
标签: jquery ajax facebook menu history
我在使用 facebook 时发现以下功能附加到其左侧垂直菜单中。
任何人都可以在“如何实现它???”中提出一些想法
【问题讨论】:
标签: jquery ajax facebook menu history
您将希望使用这种类型的范例来获得最佳的用户体验。
AJAX 是你的朋友
只发送您需要的最少信息,以便向用户显示页面的轮廓。
<html>
<head>
...scripts, meta, css etc...
</head>
<body>
<h1>Facebook Info</h1>
<div id=facebook-info>
<p>loading...</p>
</div>
<h1>Twitter Info</h1>
<div id=twitter-info>
<p>loading...</p>
</div>
</body>
</html>
然后在每个内容部分(您尚未加载)中都有一个微调器。
在加载您的 javascript 时(为了清楚起见,我使用缩写...请参阅 http://jQuery.com/ 了解有关他们的 ajax 调用的更多信息),您可以调用特定的 php 页面,这些页面会输出一些 JSON。这是真正的工作发生并需要时间的地方。
<script>
$(document).ready(function(){
$.ajax('/content/getFacebookInfo.php',displayFacebookContent);
$.ajax('/content/getTwitterInfo.php',displayTwitterContent);
});
</script>
然后在 displayFacebookContent 和 displayTwitterContent 回调函数中,这是您为 DOM 动态构建内容的地方。
<script>
var displayTwitterContent = function(response) {
var html = "<ul>";
foreach(var i in response.posts) {
html += "<li>" + response.posts[i].message + "</li>";
}
html += "</ul>";
$('#titter-info).append(html);
};
</script>
再次,这是为了显示概念的缩写,您将必须充实脚本并构建响应 JSON 对象的 php 处理程序。
通过将繁重的工作卸载到 AJAX 处理程序,主 HTML 可以快速提供,并且用户很满意。当他的眼睛在页面上移动时,一些 AJAX 调用已经完成,您将动态插入可用数据到 DOM 中,他们会看到它。
这有点像谷歌在你输入时的搜索,它会在你点击提交之前对服务器进行 AJAX 回调并抓取内容供你实时显示。
还研究了应用程序级别和网络服务器级别的服务器端缓存。您还可以在网络级别进行一些缓存。
【讨论】:
我不再对 Facebook 内部非常熟悉,但有一些方法和技术可以解决这些问题:
【讨论】:
我终于找到了解决方案。他们广泛使用缓存技术和 jQuery 历史插件,该插件支持历史,因此使其对搜索引擎友好。
【讨论】: