Запуск автосохранения в приложении текстового редактора

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

  • Это вызвано самим событием клавиатуры или периодическим сканированием (например, каждые 5 секунд), которое проверяет предыдущие события клавиатуры?
  • Должен ли он запускаться, когда пользователь не печатает (например, после 3 секунд бездействия), чтобы уменьшить сетевой трафик?

Какие-либо предложения?

Спасибо


person benweet    schedule 25.03.2013    source источник
comment
Я думаю, что второй вариант будет оптимальным. Первый вариант также будет работать, но если бы он был основан на событии клавиатуры, пользователь мог бы многократно нажимать одну и ту же клавишу, чтобы сохранить/сломать ваше приложение. Может быть, это могло бы помочь? paulirish.com/2009/jquery-idletimer-plugin   -  person SpaceCowboy    schedule 25.03.2013
comment
Интересный плагин jQuery. Это может помочь. Спасибо   -  person benweet    schedule 25.03.2013


Ответы (3)


Например, здесь описано автосохранение в Wordpress. Мое мнение, что это зависит от типа приложения. Лучший способ найти лучшее решение — это, я думаю, тот способ, который вы хотели бы видеть, посещая какой-либо сайт.

Итак, если вы поместите где-нибудь кнопку «Сохранить», то я думаю, что вам действительно нужно запускать ее не каждые несколько секунд, а каждые несколько минут (как это делает Wordpress).

Поскольку вы будете прослушивать события на клиентском языке (возможно, JavaScript), вам не нужно сильно беспокоиться о производительности — просто прослушивайте каждые 10 секунд, если хотите, и проверяйте, выполняются ли требования для автосохранения. Если это так, вы сохраняете его в какой-либо базе данных с помощью магии AJAX.

Если бы я был вами (или, если бы я был пользователем вашего сайта), я хотел бы начать слушать события при первом нажатии клавиши. Когда я ввел первую букву, JS будет сохранять в БД через AJAX каждую 1 минуту ИЛИ каждые 500-1000 введенных символов, независимо от того, что встречается первым. Думаю, было бы здорово учесть, что кто-то печатает быстрее, кто-то медленнее. Вот почему я бы проверил как количество введенных символов, так и время.

Это мое мнение. (в конце концов извините за грамматику, бесплатно для редактирования: D)

РЕДАКТИРОВАТЬ: Кроме того, если сайт принадлежит вам и вы ожидаете большого трафика и большого количества пользователей, вы можете динамически видеть, как работает система, и соответственно устанавливать свои переменные (больше/меньше время/символы)

person ceruleus    schedule 25.03.2013
comment
Это лучший подход для меня. Я добавил кнопку сохранения и запускаю автосохранение каждые 30 секунд (настраивается на сервере). Я все равно сохраняю файл в локальном хранилище, поэтому, если пользователь по какой-либо причине не сохранил файл на сервере, он может восстановить свою работу, когда вернется. - person benweet; 04.04.2013

Я думаю, что нет "правильного ответа". это зависит от того, как вы ожидаете, что ваше приложение работает.

Если вы хотите, чтобы данные на сервере всегда соответствовали тексту во внешнем интерфейсе, вы должны привязать функцию сохранения к событию клавиатуры. Однако это явно неэффективно, требует полосы пропускания и в обычной ситуации не нужно.

Если согласованность данных для вас не так важна, проверка текста и его сохранение (если текст обновляется) по истечении фиксированного периода является правильным способом.

person Brian    schedule 25.03.2013

Я работал над аналогичным инструментом для сайта блогов. Оказалось, что для этого нужно больше рассчитанных точек сохранения, а не просто:

  • каждые х секунд
  • через x секунд бездействия

В дополнение к вышесказанному я также добавил:

  • при нажатии из текстового поля
  • перед закрытием страницы
  • отслеживать операции сохранения и следить за тем, чтобы они не конфликтовали и не сохранялись слишком много раз
  • деактивация автосохранения при отсутствии ввода в текстовое поле

В нашем случае это было веб-приложение, и я использовал javascript, и было крайне важно убедиться, что он быстрый и надежный.

Вы можете найти мое решение по адресу http://www.omidmufeed.com/autosaving-text-editor-with-javascript/

Я надеюсь, что это поможет кому-то.

person omufeed    schedule 09.11.2014