Pull to refresh

Comments 44

А может просто дизаблить кнопку «отправить»(ну или «написать» если брать за пример Хабр) после первого нажатия?
Это не так надежно. И из оперы мини работать не будет.
особенно весело, когда из-за проблем с сетью, данные не доходят. а кнопка уже задизаблена…
Или невидимый инпут с уникальным ключем привязанным к сессии пользвателя, после добавления коментария генерировать новый.
То есть 1 форма = 1 комментарий.
это ж надо все время, когда юзер закходит на страничку, новый инпут генерить :)
а способ автора — один запрос к кэшу
Если не прав, поправьте :)
— Генерить ключ не так ресурсоемко как каждый раз сравнивать «многобукаф» :)
— Генерить новый ключ можно только после отправки комментария.
Тогда ваш способ и есть то, что предлагает автор.
Видимо тут весь вопрос в том, что хранить :)
Поправка: eстественно, по сути такой же, а не по содержанию
Нужно делать через ключ-хеш. Потому что запоминать весь текст коментария упрёмся в ограничение на размер печенюшки, плюс вся обработка на стороне пользователя.
А в чем проблема? Генерировать уникальную строку так сложно?
Сорри, не на тот камент ответил. Отвечал PoCTo
Проблема не в том, что это сложно, а в том, что метод автора легче
А ведь нам хочется добиться оптимизации везде, хоть и минимальной, не так ли? :)
Плюс брать это из памяти при заходе в ту же страницу и будет работать как черновик.
какой смысл брать из памяти уже отправленный коммент?
Ну, имел в виду, если он не отправлен, то вот.
А вообще, в приличном сообществе можно и с редактированием своих комментариев жить. Даже в Википедии живут.
если не отправлен, то его и нет на сервере в кеше :)
Ну, имел в виду, если кнопочку предпросмотра нажимали, то вот.
И было уже что-то о проверке на аналогичные комментарии, то при автоматическом обновлении сохранять. Хотя это такие малополезные нагрузки на сервер, куда шлётся столько флада…
Очевидное и очень нужное улучшение (причем с несложной реализацией)

Записывать нужно только еще и номер топика, вдруг у пользователя слабый словарный запас и он пишет одно и тоже в разных местах :)
ну таким образом можно еще и от комментариеви типо «гы» или «+1» избавиться
угу вместо них будут гыгы и +11:)
С избавлением от таких комментариев почти всегда справляются сами пользователи :)
не совсем корректно все это. в идеале следует делать дополнительный апрув в таких случаях, но ничего больше.
Вот это верно. Может, человек просто ходит по всем постам/комментариям и пишет «Гыыы! Плюс адын!!!»
Это его право, разве нет?
Я с Вами полностью согласен (и с первым, и со всторым Вашими комментариями)! Это его право. Может быть он даже пишет и более осмысленные комментарии, но идентичные.
Лучше всего делать проверку сообщений с тем же контентом на этапе добавления в базу данных и непосредственно внутри процедуры добавления комментария
Ну вот. Теперь не получится ставить «+1» всем подряд =(
Сам юзаю подобную штуку уже около 2-х лет в самописном движке форума.
По — моему, очень простое, но очень полезное улучшение — добавить в углу кнопку «Donate 25$ to murawjed».
Только сообщене целиком хранить не обязательно. Можно хранить какой либо простой хеш от сообщения, только выбрать не ресурсоемкий. Да хоть CRC32.
несправедливо. Хоть бы раз в жизни в банковской системе получился «дабл-пост» когда я деньги на карточку ложу.

А на форумах то мелочи )
помниться я когда-то писал на php вида: (ща напишу очень примитивно, но постараюсь передать идею)
<? php
if ($_POST['mess']) {
addNewComment($_POST['mess']);
header(«Location: „. $_SERVER['PHP_SELF']);
}

echo
form method=POST“
input type=»text« name=»mess«
input type=»submit« value=»OK«
/form»;
?>

вообщем после отправки записывал данные в БД и хеадерами обновлял страничку. В результате пользователь ничего не замечает, но по F5 доп. комменты не появляются.

П.С. предпросмотр показывает, что хабр съедает html код — поэтому я поудалял значки больше и меньше. Менее читабельно, но думаю всем будет понятно.
Эм… руки, руки! Не надо вашими писать на PHP!
спс… не пишу :)

насчет поста — не понял… сорри…

сейчас лучше понял — имхо про хеш хорошая идея. Как еще вариант ориничение на кол-во постов в 1-3 секунд? (просто решил выдвинуть на обсуждение)
Смотри. Допустим 1000 человек смотрит топик. Из них 500 решает написать пост.
Как жаль, что нельзя редактировать коментарии после случайной отправки…
>> Смотри. Допустим 1000 человек смотрит топик. Из них 500 решает написать пост.
в итоге получаем 500 запросов, которые обрабатываются интерпретатором, и, после этого, твоим волшебным хидером еще 500 запросов, которые делают то же самое.

т.е. если взять 1000 на просмотреть + 500 запостить + 500 зарефрешить — подъем нагрузки почти на треть просто по запросам.

Это не есть хорошо.
от дабл-поста (юзер два раза засабмитил форму ещё до ваших хедеров) это не спасёт.

но то, что любое «активное» (создать-редактировать-удалить) действие пользователя надо редиректить вперёд — это верно.
Ребята, зачем создавать на сервер лишнюю нагрузку?
Воистину, идеи летают по воздуху.
По моему, это всё таки делать на js. Нагрузка на сервер не увеличивается. Ничего переписывать не надо.
А как же пользователи у которых отключен js, или скрипты не прогрузились или вообще не поддерживаются… Сайт должен нормально функционировать без js, просто без «удобств» ;)
отсутствие проверки на дабл-пост особо замечено не будет, в целом так.
но если важно, можно сделать для этих случаев серверную проверку.
Решение: разрешить удалять собственные комментарии-дубли (при этом дублями считаются комментарии, идущие подряд на одном уровне вложенности). Чтобы не нарушалась целостность базы — при ссылке на комментарии-дубли делать ссылку на самый первый дубль. Или на самый последний — разница небольшая. Главное — именно этот дубль и запрещать удалять, после того, как он один останется.

Тем самым обеспечиваем минимальное увеличение нагрузки на сервер — не так уж часто ссылка на комментарий требуется. Значит, не так уж часто придётся сравнивать тексты. Ничего лишнего вычислять заранее и хранить не нужно. А те, кто самовыражается повторением, не лишаются такого права.

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

Ну и третий вариант до кучи: разрешить юзерам самим скрывать текст своих комментов. И уже не важно, дубль это или нет. Может, просто сказал нечто, о чём потом пожалел. Пусть по прежнему действует правило «что написано хабром — не вырубишь топором», если такое ограничение кому-то позарез нужно. Но хоть стыдливо прикрыться можно будет. Немного не в тему, но пересекается отчасти.
Sign up to leave a comment.

Articles