Сохранение заголовков в файлах на стороне сервера

sohranenie zagolovkov v fajlah na storone servera Сервер PyMailCGI

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

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

В качестве более полного решения каждый раз при создании главной страницы со списком сообщений в сценарии onViewPswdSubmit.py полученные заголовки всех сообщений можно было бы сохранять на сервере, в плоском файле с уникальным именем, генерируемым динамически (например, из текущего времени, идентификатора процесса и имени пользователя). Имя этого файла можно было бы передавать вместе с номерами сообщений между страницами в виде дополнительного скрытого поля или параметра запроса.

При выполнении операции удаления сценарий onViewPageAction.py мог бы загружать заголовки сообщений из файла и передавать их инструментам безопасного удаления в пакете mailtools. При загрузке полного текста сообщения этот файл также можно было бы использовать для проверки синхронизации, чтобы избежать ошибочной загрузки и отображения не тех сообщений. При этом необходимо предусмотреть какое-то решение для удаления файлов с заголовками (удалять старые файлы мог бы сценарий создания главной страницы), а кроме того, возможно, придется рассмотреть проблемы обслуживания нескольких пользователей одновременно.

По сути эта схема использует файлы на стороне сервера для имитации оперативной памяти в программе PyMailGUI, однако ситуация осложняется тем, что пользователи могут использовать возвраты в своих броузерах. Это обстоятельство может приводить к тому, что пользователи будут пытаться удалять сообщения из страниц просмотра, полученных из страниц с устаревшими списками, или повторно загружать сообщения, пользуясь устаревшими страницами со списками, и так далее. В целом может потребоваться проанализировать все возможные способы перемещения между страницами (это, по сути, конечный автомат). Файлы с сохраненными заголовками можно также использовать для проверки синхронизации в операциях загрузки сообщений и удалять в операциях удаления сообщений, чтобы эффективно отключить в предыдущих страницах возможность выполнения операций на основе устаревшей информации, хотя сопоставления заголовков может быть вполне достаточно, чтобы обеспечить точность операции удаления.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий