Техническая сторона проекта Все бланки

Как и любая хорошая идея, идея создания сайта пришла после того, как я пытался найти нужный бланк для сдачи отчетности для ЧП. Стоит сказать, что украинские сборники бланков напоминают сайты конца девятосных годов, где искать приходится браузерным поиском по Ctrl+F. После недолгих раздумий, решил сделать сайт с простым названием «Все бланки»
Первая версия была написана буквально за два выходных. Структура была классической: сущность «Бланк», которая привязана к сущностям «Категория» и «Гос орган». С виду все было красиво, код — по правилам. Но когда я начал сам наполнять каталог, понял насколько это не удобно и криво с точки зрения контент менеджера. Пришлось внести изменения.
В результате осталось две сущности «Категория» и «Бланк». Вторая соответственно привязана к первой. Категория работает с помощью дерева и может иметь несколько корней. В админке иммеется возможность сделать неограниченное число привязок от категории к бланкам. На данный момент имеется два корня в категориях — собственно «Категория бланка» и «Гос орган бланка» (второй пока что не показывается во фронтенте).
У каждого бланка стандартный набор атрибутов, метатеги вводятся вручную.
При загрузке файла система отдает человеческое название браузеру например «Договор на создание полиграфической продукции.rtf», а не «file_0023.rft». Однако данный функционал оказался несколько нетривиален по реализации. Пришлось использовать определение пользовательского браузера, чтобы отдавать название файла в правильной кодировке и urlencode.
При на каждой странице просмотра бланка, устанавливается заголовок Last modified. О нем написано в помощи Яндекса для вебмастера и есть хорошая статья на хабре. Сказано — сделано, причем одной строчкой:
header("Last-Modified: ".gmdate("D, d M Y H:i:s", strtotime($model->updated))." GMT");
Только в моем случае проблемой оказалось, что неправильно пишется дата в updated и все документы были помечены датой изменения еще в апреле, из-за чего Яндекс особо сайт не жаловал.
Аудитория сайта — 90% Украина, оставшиеся 10% — российские пользователи, по всей видимости залетные.
Вопреки статистике, что в Украине больше почитают Гугл, 80% занимает Яндекс, 11% гугл и оставшиеся 9% разные местные поисковики.
Техническая сторона:
Движок сайта, разумеется, самописный. В качестве фреймворка был выбран Yii. С ним знаком достаточно давно, проблем не возникло, работает быстро и незаметно.
На рабочем сервере весь js и css сжимается с помощью пакера CClientScriptMinify.
Для определения браузера пользователя используется библиотека Browser.php — очень и очень функциональная.
Многие статически куски кешируются с помощью APC.
