Самая простая вещь, о которой я могу подумать, - это реализовать переменную прогресса, связанную с сеансом (или уникальным идентификатором), которая часто обновляется скриптом медленной загрузки. Затем вы можете иметь 2-ю страницу, которая возвращает текущее содержимое этой переменной. Запросите переменную состояния через ajax каждые несколько секунд, чтобы обновить индикатор выполнения.
Кроме того, вы можете использовать этот метод без AJAX. По сути, вы сбрасываете скрипт, который отображает в браузере индикатор выполнения с медленной страницы. Когда страница продолжает загружаться, она периодически сбрасывает вызовы javascript update () для обновления панели.
http://devirtu.com/2008/10/16/making-progress-bar-of-page-loading/