2015-09-13 2 views
1

Я делаю сайт, который позволяет пользователям делать сообщения прямо с первой страницы. Также на первой странице у меня есть живое обновление вопросов. Каждый вопрос в этом живом фиде имеет свой собственный маленький контейнер, который содержит название сообщения и некоторые другие детали. Когда пользователь нажимает на сообщение, открывается мода (Bootstrap). Там вы можете увидеть заголовок сообщения, сообщения и живой канал комментариев. Как почтовый фид на первой странице, так и фид комментариев каждого сообщения обновляются каждые 15 секунд (фид комментариев начинает обновляться, когда модально открыто, и когда какой-либо модальный открыт, пост-почта на первой странице перестает обновляться). Все «живые» функции работают через jQuery/Ajax. Я заметил, что даже на моем локальном сервере это занимает некоторое время для загрузки. Моя база данных находится в MySQL, и я сделал несколько (около 15) тестовых сообщений и добавил комментарии к некоторым.Как повысить эффективность на веб-сайте с частыми живыми обновлениями

код для почтового корма в основном:

function updatePosts({ 
$("#postContainer").load('post_pull.php'); 
} 
setInterval('updatePosts()', 15000); 

И файл PHP просто возвращает все сообщения в пределах дивов, с деталями сообщений с модальным и некоторыми сценариями.

Коррек комментариев каждого сообщения очень похож, за исключением того, что он тянет комментарии, имеющие «родительский идентификатор» открытого модального.

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

+0

Как долго «заметное время для загрузки»? Есть несколько аспектов для этого: время обработки сервера, время транспортировки и время рендеринга – charlietfl

+0

Как я могу различить различные аспекты? Время загрузки составляет около 2 секунд на первой странице. –

+0

Это после загрузки начальной страницы? 2 секунды для большинства ajax очень длительное время. – charlietfl

ответ

0

Если вам требуется updatePosts(), укажите последний идентификатор сервера ваших сообщений, отображаемых на данный момент, поэтому сервер может отправлять только сообщения, которые не имеют вашей страницы.

updatePosts(lastID); 

function updatePosts(lastid) { 
$.get("post_pull.php?lastid=" + lastid, function() { 
    $("#postContainer").prepend(data); // or append  
}); 
} 

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

+0

. Также потребуется использовать другой метод ajax, чем 'load()'. Ответ не очень полный – charlietfl

+0

Да ... это имеет большой смысл. Никогда не думал об этом. Это обязательно реализует. Спасибо –

+0

Какой метод следует использовать вместо нагрузки? –

Смежные вопросы