Задать вопрос

Можно ли возвращать заглушку вместо отсутствующей картинки. Node.js + Express

Приветствую.

Использую node.js + express 4.0

Можно ли реализовать такую фичу. При отсутствии на сервере какой-либо картинки, подставлять вместо нее картинку-заглушку?
  • Вопрос задан
  • 3247 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
Voiddancer
@Voiddancer
node js backend
<img src="/images/new/header1.gif" onError="this.src='error-camera.gif'">
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
yttrium
@yttrium
правильнее статику отдавать nginx'ом например.. он то умеет 404 отдавать рукотворный
Ответ написан
Я написал такую тему.
Реализовано в виде миддвера, код выкладывать не буду, так как сам я - чайник, и в меня полетят тухлые овощи за быдлокод, но суть такая:
Миддлвер подключается перед обработчиком ошибок - концом цепочки миддверов и после миддвера, который отвечает за отдачу статики.
Миддлвер проверяет запрос, если он - изображение, то методом fs.stat() считывается статистика файла-заглушки, время последней модификации записывается в заголовок Last-Modified. Если получен заголовок If-Modified-Since он сравнивается с временем последней модификации, если время заголовка меньше - отдаем пустой ответ со статусом 304 и необходимыми заголовками.
Если меньше - то методом fs.pipe пользователю отдается файл со статусом 200 и заголовком Last-Modified, что бы он мог в следующий раз передать нужный заголовок, что бы мы просто вернули 304.
Если заглушка мелкая - то можно чудесно обойтись и без fs.pipe.
Еще можно проставлять тег в заголовке If-None-Match и ловить его в заголовке E-tag, опять же, отдавать 304 если не изменился, но у меня механизм запроса из кеша заработал и без него. Время запроса изображения увеличилось с 5-8 до 7-10 мс на express 3, так что, думаю, можно и обойтись без установки дополнительного веб сервера только для отдачи таких вот прелестей)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы