Оптимизация загрузки изображений и аватар -download/file.php

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
SCIF-1986
phpBB 1.4.1
Сообщения: 43
Стаж: 17 лет 11 месяцев
Откуда: Vladivostok
Благодарил (а): 1 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение SCIF-1986 »

Можно поднять тему?
Прочитал тему и так и не понял в чём был смысл переубеждать человека в том, что прямые ссылки на файлы это плохо.
Но вложения это ещё более-менее спорный вопрос, но вот отдача аватарок через «file.php?avatar=....» — это ведь уже извращение, неправда ли? Один ведь чёрт они отдаются гостям и вообще принципиально они должны быть word-readable. Пытался найти по словам «direct link avatar phpbb3» в различных сочетаниях. Не нашёл.
Прямые ссылки имеют ведь ряд преимуществ (в схеме frontend-backend):
  • кэшируются squid'ом
  • можно отдавать напрямую через nginx/lighttpd и не изголяться с кэшированием запросов вида «file.php?avatar», тем самым дубрилуя изображения в кэше фронтенда
  • если кэша нет, то совершаются лишние обращения к apache, mysql (ессно речь, про кэш, но всё-таки). Я смотрел explain'ом форумовским и картина периодически была удивительна:

    Код: Выделить всё

    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
    
    Предвкушая вопросы по explain'у — сервак 4-хядерный, загрузка обычно 1.3-1.8, редко около 2.5-3. Не свопится (регулярно смотрю free).
    Прямые ссылки избавят от лишней паразитной работы по созданию трида апача, левой активности (подключения к сокету)… И прикиньте сколько такого левака пусть даже по 0.05-0.1 сек, избегается, если грузится страничка с 20 постами и 5 аттачами в виде картинок. Набежало уже 2.5 секунды. На одного клиента. А у меня на серваке пик 850 голов за 5 минут…
Ну и если это всё не аргументы, то посмотрите плиз всё-таки на форумы с указанного выше big-boards.com — я посмотрел два первых пхпббшных. Отдают аватары напрямую :)
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>
Последний раз редактировалось SCIF-1986 05.07.2011 23:39, всего редактировалось 2 раза.
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение nissin »

Как уже писал rxu смысл в безопасности, даже если злоумышленник найдёт лазейку и сможет залить php файл с shell, то при закрытом через .htaccess каталоге upload он не сможет его запустить.
PS: у клиента с кучей сайтов на сервере через какую-то уязимость (дело явно не не в phpbb) залили php shell, и хозяйничали как дома, понаставили ссылок где можно, позаливали дополнительных shell скриптов. Вчера насилу выпровадили, все файлы чуть ли не под микроскопом просматривали.
SCIF-1986
phpBB 1.4.1
Сообщения: 43
Стаж: 17 лет 11 месяцев
Откуда: Vladivostok
Благодарил (а): 1 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение SCIF-1986 »

nissin, понял. Не вопрос. Я поправил содержание «мода».
P.S. Кстати без этих правок мод и не работал бы собственно :) Там итак всё забито .htaccess'ом. Теперь и секьюрно и работает ;)
sweetah
phpBB 2.0.6
Сообщения: 506
Стаж: 16 лет 7 месяцев
Благодарил (а): 108 раз
Поблагодарили: 26 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение sweetah »

А как же, например, те изображения, которые находятся в закрытых форумах? Они станут общедоступны?
sweetah
phpBB 2.0.6
Сообщения: 506
Стаж: 16 лет 7 месяцев
Благодарил (а): 108 раз
Поблагодарили: 26 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение sweetah »

Если сделать прямые ссылки только на файлы превью (thumbnail), безопасность пострадает, как считаете?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5563
Стаж: 21 год 8 месяцев
Откуда: Питер
Благодарил (а): 209 раз
Поблагодарили: 900 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение Siava »

nissin писал(а):drlov
Как уже здесь писали, оптимизацию я бы начал с отказа от apache в пользу nginx(как минимум для статики и download/file.php)..
Столкнулся с проблемой отдачи вложений.
На сервере как раз работает связка nginx+php+FastCGI. Всё летает, кроме отдачи картинок вложений. Пока помогает перевод download_mode для IMAGES в значение 2.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
_scorpio_
phpBB 1.0.0
Сообщения: 3
Стаж: 17 лет 4 месяца
Благодарил (а): 2 раза

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение _scorpio_ »

совместил этот и тот способ, получилось то что и ожидал)
Создание миниатюр по мере необходимости (thumb_*)

нужно только права в nginx прописать для папки files
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение Profforg »

SCIF-1986 писал(а):

Код: Выделить всё

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>
Огромное вам спасибо. Давно не могу выбрать подходящий движок для форума. Есть форумы на phpbb3, ipb, smf, vbulletin. Phpbb по скорости выполнения скриптов наилучший. Стесняет только загрузка вложений/аватаров через PHP. Есть ещё конечно некоторые баги...коих много к сожалению.
С вашей модификацией (особенно радует то, что надо только добавить 4 строки [что ещё и говорит в пользу движка phpbb) - я приблизился ещё на один шаг к созданию идеального форума)
Последний раз редактировалось Profforg 13.12.2012 3:33, всего редактировалось 1 раз.
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

Оптимизация загрузки изображений и аватар -download/file.php

Сообщение МайскийЖук »

Есть ещё конечно некоторые баги...коих много к сожалению.
А можно вот с этого места поподробнее?

И зачем такое избыточное цитирование? Обязательно было полностью весь текст предыдущего сообщения копировать?
Любовь и боль, покой и бой я как любой несу с собой…
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение Profforg »

МайскийЖук писал(а):можно вот с этого места поподробнее?
На протяжении работы моего форума были уже много разных проблем. Все я не помню. И даже не столько проблемы, сколько непонятки. Конечно винить тут некого, у всех свои вкусы. Ну озвучу проблемы и то, что непонятно - т.е. глупые реализации разных вещей:
1. Есть задача выполнить PHP код и вывести таблицу (результат). Пытался кучей способов, привлёк знакомого программиста PHP. Который не долго думаю сказал - что копаться бессмысленно и лучше сразу вывести через iframe. Я считаю это бредом, т.к. считаю, что на странице не должно быть php файлов, кроме index.php. Иначе на слабом VPS (тупо для примера) ваш сайт ляжет от F5. Пока реализовано через iframe, но хотелось сделать, чтобы код выполнялся. Само изменение я пытался сделать в index_body.html. Эту табличку нужно выводить только на главной. P.S. В настройках выполнение PHP кода в шаблонах включено.
2. Отсутствие "стремления к новым технологиям" внутри движка:
a) В IPB для примера в последней ветке появились функции для подключения пути к статическим файлам через поддомен. Данный поддомен можно подключить к CDN, что очень полезно. Изменяя значение в конфиге - вы изменените его для всей статики в стиле.
Не говоря уже о том, что идеальном вариантом является не просто поддомен - а (для примера) последовательный выбор из поддоменX , где X - число от 0 до 100. Т.е. каждая картинка, css/js скрипт будут загружаться со своего поддомена [если статики 100]. Это необходимо, т.к. все браузеры имеют ограничение на загрузка с адреса и если у вас на странице до ста img, css, js суммарно - каждый будет загружаться со своего адреса (поддомена) и страница у пользователя будет открываться намного быстрее. Но это уже изящество для дефолтной функции движка)
b) Отсутствие встроенной Ajax, Jquery - функциональности. Я знаю, что есть мод - но из-за пункта 3 нет желания его ставить.
c) Непонятно, как PHPBB работает с типом таблиц InnoDB. В Ipb в конфиге есть параметр для обозначения типа таблиц.
Может быть phpbb идеально работает со всеми видами таблиц? Тогда всё хорошо...но как я могу быть в этом уверен?
3. Нет нормальной установки модов. Думаю "старички" привыкли к системе ручного редактирования, но мне бы хотелось видеть, что установлено а что нет. Я знаете ли, боюсь обновлять движок - вдруг что сломается. Я смогу вернутся сделав все бэкапы, но у меня пропадает желание обновлять движок. Также крупные и значительные моды ставить проблематично.
4. Отсутствие перенаправления со многих страниц. Я написал персональное сообщение - хочу следующему написать, почему я должен жать "Вернуться...". Если результат = "OK" (тобишь сообщение отправлено и нет проблем) - возвращай назад к списку ЛС и уже там (если уж так нужно) выводи - сообщение успешно отправлено. В шаблонизаторах это продумано, а в Phpbb3 он есть и не думаю, что такая реализация будет сложной.
5. Хранение куки в базе. Спрашивается - зачем? Куки должны быть в браузере и нет смысла в дополнительных проверках. Зачем нагружать базу такими проверками мне не понятно.
6. Отсутствие необходимой дебаг функциональности для устранения проблем
Без изучения кода, особенности движка знают только его разработчики. Поэтому рядовой юзер не может просто взять и исправить проблему. Например исправить "Потеряные вложения".
7. Непонимаю для чего было так уродовать шрифт и размер текста в кнопках админпанели? Изображение
8. Странная система стилей. Например я хочу перенести все картинки шаблона на отдельный домен и чтобы они просто подгружались в HTML - я готов забыть о том, что моё время ограничено и вручную поменять все пути, что собственно я и сделал. Вот только есть такая папка... ./styles/name/imageset , в которой два десятка маленьких картинок, которые я понятия не имею как оттуда вывести и заставить PHPBB брать их с URL...
9. Опять же противоречиво, но тот же SEO мод вполне можно было бы включить в дефолтную сборку phpbb.
МайскийЖук писал(а):И зачем такое избыточное цитирование? Обязательно было полностью весь текст предыдущего сообщения копировать?
Я просто нажал "Цитата". Поменял.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение Pazh »

1 -ый пункт полный бред - пол форума построено на динамическом построении таблиц, а Вы не смогли
2 b) - расширений, использующих ajax через JQuery, Mootools или чистый JS, для основных функций форума есть достаточно
2 с) - работает с любыми таблицами и разными СУБД прям из коробки без проблем
3 - AutoMOD
4 - вопрос решается правкой в 2-3 местах
5 - кто Вам такой бред сказал что куки храняться в базе? Как без проверки определить залогинен юзер ранее или нет - поведайте?
6 - очередной бред. Дебагер есть и сообщает обо всех ошибках, кроме того есть расширение, благодаря которому об ошибках будет знать только админ и они будут логироваться. А про Потерянные вложения вообще умора - зайди на первую страницу админки и нажми на ссылку Потерянные вложения
7 - это настройки твоего браузера
8 - опять говорит о том что ты ничего о phpbb не знаешь
9 - спорный вопрос - нужен ли он. Кроме того на сайте разработчика SEO мода есть актуальная версия движка с предустановленным SEO и возможностью его отключить

Итого: из 9(11) пунктов можно принять только один - распределение статики по поддоменам

Короче очередной ламер попытался рассказать о продукте о котором он не имеет никакого представления...
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

Оптимизация загрузки изображений и аватар -download/file.php

Сообщение МайскийЖук »

Ох. Еле-еле осилил. Ну, неужели так сложно разделить свое сообщение хотя бы на абзацы с пропуском строк между ними, чтобы было удобнее читать? :?

В общем, много мне писать не хочется в ответ, устал. Поэтому напишу кратко: все вышенаписанное верно только с одной стороны. Но достаточно лишь приглядеться к статистике взлома форумов на булке и на phpBB3, и становится совершенно ясно, что «лучшее — враг хорошего».

Шаблонизация в phpBB3 — очень удобная, разобраться с ней очень легко, если немного вдуматься. SEO в дефолтной сборке совершенно не нужен, потому что до сих пор многие спорят о его полезности для индексации. Кому надо, тот оптимизирует, а меня и многих других устраивает и обычный вид ссылок.

Ну, в общем, на каждый пункт можно привести оправдание его целесообразности в движке. Но пусть за меня это сделают другие.

Добавлено спустя 2 минуты:

Pazh меня опередил и высказался более резко. :lol:

А я уж боюсь слова сказать. Одному вон сказал недавно, что он дебил, в итоге строгий и справедливый rxu забанил меня на несколько дней. :roll:
Любовь и боль, покой и бой я как любой несу с собой…
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение Profforg »

Pazh по-моему кроме того, чтобы говорить "Ты дурак, твои проблемы" ничего не умеют. На все вопросы он ответил идиотизмом.
Даже комментировать не буду. Очередной ламер научился печатать на клавиатуре.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Оптимизация загрузки изображений и аватар -download/file

Сообщение Палыч »

Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5563
Стаж: 21 год 8 месяцев
Откуда: Питер
Благодарил (а): 209 раз
Поблагодарили: 900 раз

Re: Оптимизация загрузки изображений и аватар -download/file.php

Сообщение Siava »

А для движка 3.1 есть подобное решение?
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)

Вернуться в «Поддержка phpBB 3.0.х»