Прочитал тему и так и не понял в чём был смысл переубеждать человека в том, что прямые ссылки на файлы это плохо.
Но вложения это ещё более-менее спорный вопрос, но вот отдача аватарок через «file.php?avatar=....» — это ведь уже извращение, неправда ли? Один ведь чёрт они отдаются гостям и вообще принципиально они должны быть word-readable. Пытался найти по словам «direct link avatar phpbb3» в различных сочетаниях. Не нашёл.
Прямые ссылки имеют ведь ряд преимуществ (в схеме frontend-backend):
- кэшируются squid'ом
- можно отдавать напрямую через nginx/lighttpd и не изголяться с кэшированием запросов вида «file.php?avatar», тем самым дубрилуя изображения в кэше фронтенда
- если кэша нет, то совершаются лишние обращения к apache, mysql (ессно речь, про кэш, но всё-таки). Я смотрел explain'ом форумовским и картина периодически была удивительна:
Предвкушая вопросы по explain'у — сервак 4-хядерный, загрузка обычно 1.3-1.8, редко около 2.5-3. Не свопится (регулярно смотрю free).
Код: Выделить всё
Page generated in 0.4429 seconds with 20 queries + 6 queries returning data from cache Time spent on mysqli queries: 0.00994s | Time spent on PHP: 0.43301s
Прямые ссылки избавят от лишней паразитной работы по созданию трида апача, левой активности (подключения к сокету)… И прикиньте сколько такого левака пусть даже по 0.05-0.1 сек, избегается, если грузится страничка с 20 постами и 5 аттачами в виде картинок. Набежало уже 2.5 секунды. На одного клиента. А у меня на серваке пик 850 голов за 5 минут…
P.S. Также крайне любопытно зачем всё-таки вся эта морока с аватарами отдающимися через файлик?
Добавлено спустя 1 час 53 минуты 33 секунды:
Re: Оптимизация загрузки изображений и аватар -download/file.php
Мода не нашёл и пошёл искать как отдаются аватары и генерятся ссылки на них.
Оказалось всё просто. Соль (из конфига) + номер картинки.
Теперь у меня генерятся ссылки на прямую к аватарам. Если кому интересно, то вот инструкция (сделал переопределение, а не замену, чтобы при апдейтах не ругался на эти строки):
Код: Выделить всё
OPEN
includes/functions_display.php
FIND
$avatar_img = $phpbb_root_path . "download/file.$phpEx?avatar=";
AFTER ADD
$ext = substr(strrchr($avatar, '.'), 1);
$avatar = (int) $avatar;
$avatar = $avatar . '.' . $ext;
$avatar_img = $config['avatar_path'] . DIRECTORY_SEPARATOR . $config['avatar_salt'] . '_';
OPEN
images/avatars/upload/.htaccess
FIND
<Files *>
Order Allow,Deny
Deny from All
</Files>
REPLACE WITH
Order Allow,Deny
Deny from All
<Files ~ "\.(jpe?g|gif|png)$">
Order Allow,Deny
Allow from All
</Files>


