проблема с отображением изображений, хранящихся вне корневой веб-папки - PullRequest
1 голос
/ 28 апреля 2010

На сайт пользователи могут загружать картинки. По соображениям безопасности они хранятся вне папки webroot (public_html). Когда мне нужно отобразить картинку, я отправляю заголовки и получаю «readfile» для чтения и вывода данных картинки, например, так:

header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header('Content-type: image/jpg');
header('Content-Length: ' . $filesize);

readfile($path_url . '/' . $photo);

Это прекрасно работает, но сайт растет, и это начинает обременять сервер.

Вопрос: есть ли способ отправить изображение или данные изображения пользователю без необходимости сначала загружать изображение с сервера (очевидно, что изображение все еще сохраняется вне папки webroot)?

Спасибо!

David

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Если ваши проблемы действительно происходят именно из этого места, и вы не можете использовать HTTP-кеширование, есть решение, прокси-сервер.nginx с X-Accel-Redirect или lighttpd с заголовками X-Sendfile

0 голосов
/ 28 апреля 2010

Вы можете заглянуть в mod_xsendfile, модуль apache, который иногда может оказаться полезным в таких ситуациях, как ваша. В противном случае может потребоваться реализация выделенного медиа-сервера.

0 голосов
/ 28 апреля 2010

Не могли бы вы сохранить изображения в базе данных SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...