Прошло уже два года с момента публикации первой версии ESPS и полтора года
с момента появления предыдущего, третьего, поколения ESPS, когда авторами
было принято решение кардинально переработать текущую реализацию данного
прокси-сервера. За время существования предыдущих версий, по просьбам
пользователей, в них было внесено такое количество доработок, что во
многих местах программного кода некоторые построения стали сильно отличаться
от первоначального замысла и приобрели искусственный и чужеродный для
изначальных конструкций характер. Такое положение случается с любым
серьезным проектом, который годами совершенствуется, и ESPS в этом отношении
не является каким-либо исключением. В такой ситуации единственный
выход - кардинальная переделка всего проекта, при которой все процедуры
кода изначально строятся так, чтобы учесть тот уровень функциональности,
который в предыдущей реализации был внедрен, местами, насильственным для
изначального кода образом.
Кроме этих причин, носящих общий характер, причиной появления нового
поколения стало также то, что в ходе эксплуатации ESPS 3.xx обнаружилась
ненужность ряда свойств ESPS, таких как, например, системы автообновления
объектов кэша, кэш DNS, кэш в ОЗУ и др. Эти не оправдавшие себя подсистемы
решено было исключить из нового поколения ESPS. Также при использовании
предыдущей версии выяснилось, что реализация системы файлового кэширования имеет
ряд существенных недостатков, на которые постоянно поступали жалобы
пользователей: "залипание" кэша, медленность его работы при большом
количестве объектов и т.п. В этой связи, система файлового кэша
(единственная в этой версии из оставленных систем кэширования), как одно из центральных
звеньев работы прокси-сервера, была принципиально переработана. Основыми
моментами этой переработки являются полное перемещение всех объектов кэша
на жесткий диск (без сохранения в ОЗУ каких либо указателей, так что теперь
кэш на диске в любой момент актуален и не требует, как в предыдущем
поколении, периодического согласования между ОЗУ и жестким диском) и
внедрение в ESPS системы автоматической подстройки времени жизни
объектов файлового кэша, которая позволяет с максимальной эффективностью
экономить внешний канал без "залипания" объектов. Кроме этого, еще одной
частной причиной переделки явилась необходимость сведения в один модуль
всего учета работы клиентов сервера, независимо от вида сервиса, которым
они пользуются (http, smtp, nntp и т.д.), так чтобы ограничения количества
сессий, учет трафика, нарезка полосы и т.п. велись централизовано по всем
системам ESPS.
Еще один недостаток предыдущего поколения ESPS, который мог быть
преодолен только путем кардинальной перестройки, заключается в системе
роутинга портов: каждый элемент этой системы создавал свое множество
рабочих потоков, что было весьма нецелесообразно при большом
количестве таких элементов. В новом поколении каждый элемент роутинга
портов использует для своей работы потоки из общего пула системы
роутинга портов, существенно экономя при этом ресурсы компьютера,
на котором работает новая версия ESPS.