логотип нужно хранить в виде массива байтов в БД,
Очень странное требование.
Тогда вам потребуется еще скрипт, который будет его возвращать как картинку.
Окей, Вы соберете все нужные заголовки ответа для его кеширования. Но вместе с
новый будет заменять старый
вы не можете сказать кешируей его на год, придется обрабатывать etag и modify-since
И то мы имеем ? на каждого уника - промах мимо nginx'a. Запрос в базу данных.
при его постаянной навигации еще раз в час или чаще запрос в базу и уже по короче ответ "Не изменился"
Это вместо поведения из коробки, когда он лежит файлом на сервере.
Теперь положить его в какую ту существующую таблицу.
Добавляется блобовское поле. По хорошему все существующие селекты к ней вместо
select * переписать без звездочки через список нужных в конкретном месте полей, чтобы не нагружать зря базу данных.
Куда ? Ну посмотри может есть таблица настроек в которой на сайт одна строка.