Должен ли я использовать JSON или XML или что-то другое для извлечения содержимого страниц каждые X раз? - PullRequest
0 голосов
/ 21 августа 2009

index.php имеет этот код jquery, который загружает notifications.inc.php в div на странице каждые X секунд *

<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, поэтому я не уверен, как именно реализовать это

Ответы [ 6 ]

2 голосов
/ 21 августа 2009

Если я правильно читаю, вы отправляете целый поток уведомлений о каждом опросе. Я думаю, что гораздо лучшая оптимизация будет заключаться в том, чтобы запрашивать только новые уведомления. Вы можете поместить метку времени для каждого уведомления где-нибудь в строке таблицы, а затем запросить notifications.inc.php?since=1234567890. Это вернет только новые строки таблицы, и вы можете вставить их в таблицу, а не заменять их целиком.

JSON будет следующим шагом, да; просто создайте объект на сервере, закодируйте его с помощью существующей библиотеки , верните его клиенту и сделайте так, чтобы jQuery расширил его до объекта Javascript. Если вы закутываетесь в библиотеках, вы просто перемещаете массив + хэш-структуру с сервера на клиент.

0 голосов
/ 29 августа 2009

В моем последнем проекте я использую JSON для передачи результатов во внешний интерфейс. Я думаю, что это прекрасно работает с JQuery. Не забудьте, что JSON создан для JavaScript (объектная нотация JAVASCRIPT)

0 голосов
/ 29 августа 2009

использование JSON - это хорошая идея вместо XML. Потому что размер передаваемых данных также имеет значение. В этом отношении JSON намного легче, чем XML. Кроме того, как сказал Стивен, XML будет излишним, потому что JSON вписывается в формат объектов javascript. Таким образом, извлечение данных просто по сравнению с XML.

0 голосов
/ 21 августа 2009

Идея состоит в том, что вместо повторной передачи всего отформатированного HTML, тега и всего остального вы просто отправляете данные, возможно, даже просто новые данные. Javascript, уже загруженный в браузер, просматривает новые данные и корректирует то, что отображается, или, возможно, заново создает часть того, что отображается.

Таким образом, вы выигрываете, передавая меньше данных, а возможно, гораздо меньше данных.

Стоимость Java-скрипта довольно сложна.

Преимущество использования JSON в качестве формата данных, которые вы передаете, заключается в том, что разбирать его очень мало - это потому, что формат равен javascript.

Существует множество библиотек и примеров для выполнения всего этого, поэтому фактические усилия по написанию кода не слишком велики.

0 голосов
/ 21 августа 2009

Посмотрите на cometd для такого рода вещей. Это во многом уже решенная проблема.

0 голосов
/ 21 августа 2009

Один из способов сделать это - разместить основной HTML-код для таблицы уведомлений на каждой странице, но убедитесь, что она скрыта с помощью CSS. Затем вы можете сделать простую публикацию JSON (я бы порекомендовал JSON для этого, потому что это очень простая публикация, запрашивающая очень простые данные, поэтому XML будет излишним). Затем, если сообщение возвращает уведомление, вы кладете его в таблицу и переключаете отображение с нуля на блокировку (и здесь вы можете добавить любые вещи с постепенным появлением / исчезновением, которые вам нужны, например).

Это значительно сократит количество байтов, отправляемых туда и обратно, что позволит сэкономить пропускную способность и ускорить отправку сообщений для тех, у кого медленное соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...