Уменьшение нагрузки на сервер, путем хеширования изображений в базу данных

интернет программирование asp.net Оптимизация Сервера

Добрый вечер. У меня есть проект (в разработке), он основан на одном едином сервисе (ASP.NET MVC API), и он имеет одну лишь HTML страницу, которая через Ajax запросы сервису, получает все данные. Изображения стилей, я хеширою с помощью base64, дабы избавится от лишних запросов на сервер (если это не правильно, прошу подсказать). А вот изображение аватарок пользователей (это обычно файлы размером в мегапиксель), тоже хотелось бы хешировать с помощью base64, и записывать их в базу данных, что-бы полностью избавится от работы с диском (единая html страничка будет кешированна в ОЗУ). Скажите, можно расчитывать хоть на какой-то успех от данных способов, или они сделают хуже? Аудитория сайта рассчитана на тысячи одновременных пользователей.

И дополнительный вопрос. Стоит ли писать свой HTTP сервер, или же оптимизированнее будет использовать ASP.NET MVC, ведь мне от сервера нужна только эта страничка, и данные в Json формате передаваемые в HTML страничку через Ajax
Ответы:
Ваш метод даст некий прирост в скорости, но повысит требования к серверу по памяти. Приемлемо ли это для Вас - решать Вам.
Во-первых, при такой структуре логичнее использовать два MVC: первый - простой, отдает ту самую исходную "HTML страницу", второй работает аяксовые запросы. Их можно разруливать на фронт-контроллере и раздавать своим роутерам.
Во-вторых, При хешировании таком вообще, стоит помнить, что при base64, насколько я помню, полученный хеш ощутимо больше исходного контента. Получается, что передаваемый хеш больше, чем исходный код, а это траффик. Лучше собирать все стили в сборку и минимизировать ее. С одной стороны, будет меньше запросов к серверу на css/js (подгружается по одному файлу), с другой стороны, меньше контент (файлы минимизированы). Такие сборки можно жестко кешировать на фронте и пересобирать только при релизах. Опять же, при грамотном использовании заголовков они будут кешироваться и на клиенте
Дальше, вряд ли диск не будет использоваться, если хранить картинке в базе - он будет использоваться но через движок БД. Опять же избыточность при хешировании будет увеличивать хранимые данные - база будет пухнуть. Лучше опять же кешировать на фронте и отдавать с заголовками, чтобы кешировалось и на клиенте (Pragma, LastUpdated и т.д.)
В качестве фронта лучше использовать nginx он очень быстрый, нересурсоемкий и много что умеет с файлами.
Свой http сервер писать, ИМХО, совсем не стоит


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.