Оптимизация кода голосования за комментарии
Изучая проблему «тяжести» страниц при большом количестве комментариев, думую не я один, увидели следующую картину…
У каждого комментария код на Лайвстрите:
Тоесть, здесь заложены 5 событий, 4ре из которых невидимые (display: none;) и одно видимое (display: inline;)
Это неимоверно утяжеляет html страницу, как вчера выяснилось,
например для топика с 200 комментами, с 500 до 800 кб (более 50%). Одними средствами css тут не обойтись, я сейчас этм занимаюсь, но процесс все равно останется неоптимизированным…
Сразу говорю, я к сожалению не силен в Java, но призываю шарящих в ней, давайте поможем Максу оптимизировать обработку голосования за комментарии, как раз выходные на носу.
Код, обрабатывающий showCommentVote:
У каждого комментария на Хабре такой код:
как говорится, почувствуйте разницу…
У каждого комментария код на Лайвстрите:
<span id="comment_vote_self_12" style="display: none;">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_down_gray.gif" border="0" alt="-" title="нельзя голосовать за свой комментарий">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_up_gray.gif" border="0" alt="+" title="нельзя голосовать за свой комментарий"></span>
<span id="comment_vote_is_vote_up_12" style="display: none;">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_down_gray.gif" border="0" alt="-" title="вы уже голосовали за этот комментарий">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_up.gif" border="0" alt="+" title="вы уже голосовали за этот комментарий"></span>
<span id="comment_vote_is_vote_down_12" style="display: none;">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_down.gif" border="0" alt="-" title="вы уже голосовали за этот комментарий">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_up_gray.gif" border="0" alt="+" title="вы уже голосовали за этот комментарий"></span>
<span id="comment_vote_ok_12" style="display: inline;"><a href="#" onclick="ajaxVoteComment(12,-1); return false;"><img src="http://test4.ru/templates/skin/habra/img/vote_comment_down.gif" border="0" alt="-" title="плохой комментарий"></a>
<a href="#" onclick="ajaxVoteComment(12,1); return false;"><img src="http://test4.ru/templates/skin/habra/img/vote_comment_up.gif" border="0" alt="+" title="хороший комментарий"></a></span>
<span id="comment_vote_anonim_12" style="display: none;">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_down_gray.gif" border="0" alt="-" title="для голосования необходимо авторизоваться">
<img src="http://test4.ru/templates/skin/habra/img/vote_comment_up_gray.gif" border="0" alt="+" title="для голосования необходимо авторизоваться">
</span>
<script>showCommentVote('comment_vote_anonim',12);</script>
Тоесть, здесь заложены 5 событий, 4ре из которых невидимые (display: none;) и одно видимое (display: inline;)
Это неимоверно утяжеляет html страницу, как вчера выяснилось,
например для топика с 200 комментами, с 500 до 800 кб (более 50%). Одними средствами css тут не обойтись, я сейчас этм занимаюсь, но процесс все равно останется неоптимизированным…
Сразу говорю, я к сожалению не силен в Java, но призываю шарящих в ней, давайте поможем Максу оптимизировать обработку голосования за комментарии, как раз выходные на носу.
Код, обрабатывающий showCommentVote:
<script type="text/javascript">
var currentShowForm=-1;
function showCommentForm(reply) {
if (document.getElementById('reply_'+currentShowForm)) {
var div_form_comment=document.getElementById('reply_'+currentShowForm);
div_form_comment.style.display='none';
} else {
var div_form_comment=document.getElementById('form_comment');
}
var div_reply=document.getElementById('reply_'+reply);
var form_comment_reply=document.getElementById('form_comment_reply');
document.getElementById('text_preview').innerHTML='';
form_comment_reply.value=reply;
var s=div_form_comment.innerHTML;
div_form_comment.innerHTML='';
div_reply.innerHTML=s;
div_reply.style.display='block';
currentShowForm=reply;
document.getElementById('form_comment_text').focus();
}
</script>
У каждого комментария на Хабре такой код:
<a href="#" rev="vote-against" class="vote_minus" title="Плохой комментарий" onclick="return Voter.vote(event, this, 'post_comment', 'minus');"> </a>
<a href="#" rev="vote-for" class="vote_plus" title="Хороший комментарий" onclick="return Voter.vote(event, this, 'post_comment', 'plus');"> </a>
как говорится, почувствуйте разницу…
11 комментариев
А вообще, в перспективе, ведь будет? =)) (читать голосом Фродо)
если создать запись в личном блоге как закрытую, она не отобразится на главной, как и положено. При комментировании записи закрытого блога пост появляется в прямом эфире. Извините, если баг уже известен.
нужно поправить
p.s Сделать несложно нужно будет реализовать.