Это не так просто, не так ли? Поскольку Интернет является асинхронным, и пользователи имеют широкое

различные шаблоны редактирования, полагаясь на простую блокировку или даже «разумный» тайм-аут

не будет очень хорошим решением. Скорее всего, вместо этого любой такой механизм

в конечном итоге разочаровывает и раздражает пользователей.

Обратите внимание, что обсуждаемая здесь блокировка файлов отличается от блокировки, реализованной

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

время. В последнем случае мы просто гарантируем, что одновременно может работать только один процесс.

физически изменить файл.

Обнаружение конфликтов

Бессрочная версия блокировки блокирует сохранение на основе обнаруженных конфликтов версий.

Принцип достаточно прост. Когда пользователь загружает страницу для редактирования, некоторые

информация о "версии" хранится в клиенте. Это может быть явная версия


304

АДМИНИСТРИРОВАНИЕ ВИКИ И ИНСТРУМЕНТЫ

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

страницы, эта версия должна быть идентична файлу на момент написания.

Преимущество заключается в том, что любая блокировка действий пользователя откладывается до разрешения конфликта.

подарок. По большей части это означает, что механизм невидим для пользователя. На

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

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

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

1. Изменения должны быть как-то сохранены (с помощью буфера обмена или

открыть другое окно).

2. Необходимо перезагрузить текущее содержимое страницы.

3. Сохраненные изменения должны быть интегрированы с новым контентом.

4. Новую версию необходимо сохранить.

Приведен пример страницы с предупреждением, представленной вики в конфликте версий.

рис. 9-14. Обратите внимание, что обе ссылки на TestPage являются активными ссылками, которые будут загружать

текущая версия. Этот метод «первого сохранения-победы» в настоящее время реализован на

Ward's Portland Pattern Repository, который на протяжении большей части своего существования использовал

непроверка поведения «последнее сохранение-победа».

Остается проблема юзабилити с проверкой версий, и это связано с

как клиент браузера кэширует страницы, включая форму редактирования. Реализующая версия

проверка означает, что больше невозможно просто «создать резервную копию и отредактировать» предыдущую

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

По сути, у вас есть конфликт версий с самим собой. Насколько это утомительно, зависит от

много на ваших пользователей и насколько укоренилась привычка резервного копирования и редактирования.