Получается, что в картинках есть доступ программному коду, что не безопасно.
В картинках нет доступ к программному коду. Это абсолютный бред.
Что же на самом деле происходит?
Для этого нужно понимать, как работает современная архитектура.
Когда вы запрашиваете картинку, то ваш запрос отправляется на балансировщики (да, их может быть несколько), для выбора ближайшего используется протокол anycast.
Далее балансировщик выбирает ближайший наименее загруженный веб-сервер.
Веб-сервер принимает запрос и разбирает его на компоненты.
Например в вышеприведенном примере, можно увидеть, что запрос выглядит примерно так
"scontent-lga3-1.xx.fbcdn.net/v/t1.0-9/283048_103813746439563_31482813_n.jpg?oh=63f4724d166e6e322316283885f15ddc&oe=58D3C4F4"
scontent-lga3-1 - имя хоста, на котором может храниться изображение. Этот хост является частью сети доставки контента.
v/t1.0-9 - понятно, что это версия, скорее всего версия варианта хранения. Facebook непрерывно развивается, поэтому наверняка имеется процедура миграции между различными версиями хранения данных.
283048_103813746439563_31482813 - уникальный идентификатор изображения, три части которого являются разного рода идентификаторами.
oh - скорее всего object hash - некая цифровая подпись объекта.
oe - object expiration - фейсбучный аналог e-tag, специальный параметр указывающий на устаревание объекта.
Если интересно, как работает хранилище фоток в Фейсбук можете почитать в их блоге
https://code.facebook.com/posts/685565858139515/ne...
Насколько я понимаю, Facebook не вычисляет доступ к объекту на лету, т.к. зная точный адрес изображения, его какое-то время можно открыть на другой машине.
Так вот, после того, как получен идентфикатор изображения и метаданные, система знает, с какого участка файловой системы его можно читать. Дальше все просто, отправить заголовок, считывать данные с диска, отправлять их клиенту.
Итак, с точки зрения производительности, самое напряжное - скорость чтения данных с диска, т.е. обычное I/O, поэтому если вам нужна именно скорость, то надо сфокусироваться на быстром хранилище, т.е. SSD просто обязательно.
Далее нужны соображения по поводу надежности, балансировки, обеспечения безопасности доступа.
Вам нужно понять, что мир не заканчивается на уровне Apache и PHP. Например может быть свой особый модуль для nginx, который будет ходить в базу и проверять доступность объекта и лишь затем считывать его с диска. Т.е. то, что вы видите в адресной строке может не иметь ничего общего с тем, как эти данные фактически хранятся на диске, например они могут лежать в HDFS или GridFS.
В вашем случае с учетом вашего уровня знаний лучше всего воспользоваться проверенными решениями вроде хранения картинок в S3 и отдачи их через Cloudflare c кэшированием, например так
https://habrahabr.ru/post/245165/
или так
https://habrahabr.ru/company/io/blog/257533/