index.php 有这个 jquery 代码,它每隔 X 秒将 notification.inc.php 加载到页面上的 div
<script type='text/javascript'>
$(document).ready(function(){
var updatenotification = function(){
$('#notificationcontainer')
.load('notifications.inc.php')
.fadeIn("slow");
};
var auto_refresh = setInterval(function(){updatenotification();}, 5000);
updatenotification();
});
</script>
notifications.inc.php
<?PHP
if(notifications != 0){
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="box1r">
<tr><td height="25">Notifications</td></tr><tr><td colspan="2" bgcolor="#FFFFFF" height="11">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?PHP
if($item1 == 1){
echo 'AN HTML TEXT LINK HERE';
else if($item2 == 1){
echo 'AN HTML TEXT LINK HERE';
else if($item3 == 1){
echo 'AN HTML TEXT LINK HERE';
else if($item4 == 1){
echo 'AN HTML TEXT LINK HERE';
}
// ect. ect
?>
</table></td></tr></table>
<?PHP
}// end main block, only show the header "Notification" text if there is at least 1 notification ITEM to be shown
?>
现在这对我来说效果很好,可以显示用户何时收到新消息, 评论,照片评论,好友请求,主页上的类似内容。
我的网站流量相当高,我想改进各个方面的代码,(请保存预优化是邪恶的言论,我除了时间什么都没有,并且已经在这个网站上工作了 2 年,我想尽我所能)
所以我认为这可以做得更好?首先我知道我应该重新编码表格以使用 DIV,但现在我将在此特定页面上使用此表格设置。
那么为了节省带宽和性能,我应该使用 JSON 或其他东西,而不是每 10 秒左右加载另一个页面的内容吗?
如果我应该使用 JSON 或其他东西,请解释一下,我是 JS 新手,所以我不确定如何准确实现它
最佳答案
如果我没看错的话,您将在每次民意调查中发送完整的通知流。我认为更好的优化是只请求新通知。您可以将每个通知的时间戳放在表行中的某处,然后请求 notifications.inc.php?since=1234567890
。这将仅返回新的表行,您可以将它们插入表中,而不是替换整个内容。
JSON 将是下一步,是的;只需在服务器上创建一个对象,使用 existing library 对其进行编码,将其返回给客户端,然后让 jQuery 将其扩展为 Javascript 对象。如果您将所有内容都封装在库中,那么您实际上只是将数组+哈希结构从服务器移动到客户端。
关于php - 我应该使用 JSON 或 XML 或其他东西来每隔 X 时间获取页面内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1312961/