И снова этот Downloads, я наверное уже достал всех с ним 🙂
Обнаружил очень неприятную штуку, которой не было в 3.4. Вводные такие: в загрузках около 1500 категорий в общем, родительских, которые отображаются в сайдбаре, где-то штук 30. Проблема в следующем: при попытке зайти на главную /files/ страница загружается 25-35 секунд! Иногда даже дольше. То есть нажали -> ждем полминуты, и потом страница моментально появляется.
Опытным путем установил, что проблема как раз заключается в сайдбаре с категориями. Попробовал вставить его на главную форума, получил ту же загрузку в полминуты. Без него загружается максимум за 2 секунды. Отмечу, что абсолютно все другие страницы сайта загружаются моментально, включая родительские категории с большим количеством подкатегорий и файлов.
Как я это вижу, могу ошибаться: при запросе главной страницы запрашиваются ВСЕ подкатегории файлового архива, отсюда тормоза и огромная нагрузка на сервер. Я попробовал найти корень проблемы, но знаний не хватает, смог только определить какой файл отвечает за вывод главной страницы, и возможный код, отвечающий за категории, и то уже не уверен, вдруг там еще хитрее как-то сделано.
protectedfunction _category( $category ){
\IPS\Output::i()->sidebar['contextual']='';
$_count = \IPS\downloads\File::getItemsWithPermission( array( array( \IPS\downloads\File::$databasePrefix . \IPS\downloads\File::$databaseColumnMap['container'].'=?', $category->_id )), NULL,1,'read', \IPS\Content\Hideable::FILTER_AUTOMATIC,0, NULL, FALSE, FALSE, FALSE, TRUE );if(!$_count ){/* If we're viewing a club, set the breadcrumbs appropriately */if( $club = $category->club()){
$club->setBreadcrumbs( $category );}else{foreach( $category->parents()as $parent ){
\IPS\Output::i()->breadcrumb[]= array( $parent->url(), $parent->_title );}
\IPS\Output::i()->breadcrumb[]= array( NULL, $category->_title );}/* Show a 'no files' template if there's nothing to display */
$table = \IPS\Theme::i()->getTemplate('browse')->noFiles( $category );}else{/* Build table */
$table =new \IPS\Helpers\Table\Content('IPS\downloads\File', $category->url(), NULL, $category );
$table->classes = array('ipsDataList_large');
$table->sortOptions = array_merge( $table->sortOptions, array('file_downloads'=>'file_downloads'));if(!$category->bitoptions['reviews_download']){
unset( $table->sortOptions['num_reviews']);}if(!$category->bitoptions['comments']){
unset( $table->sortOptions['last_comment']);
unset( $table->sortOptions['num_comments']);}if( $table->sortBy ==='downloads_files.file_title'){
$table->sortDirection ='asc';}if( \IPS\Application::appIsEnabled('nexus')and \IPS\Settings::i()->idm_nexus_on ){
$table->filters = array('file_free'=>"( ( file_cost='' OR file_cost IS NULL ) AND ( file_nexus='' OR file_nexus IS NULL ) )",'file_paid'=>"( file_cost<>'' OR file_nexus>0 )",);}
$table->title = \IPS\Member::loggedIn()->language()->pluralize( \IPS\Member::loggedIn()->language()->get('download_file_count'), array( $_count ));}
Я так думаю, нужно как-то попробовать сделать чтобы запрашивались только родительские категории, но ума не приложу как это сделать. Это при условии что проблема в этом конечно.
Изменено пользователем DevilDriver Название темы
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
И снова этот Downloads, я наверное уже достал всех с ним 🙂
Обнаружил очень неприятную штуку, которой не было в 3.4. Вводные такие: в загрузках около 1500 категорий в общем, родительских, которые отображаются в сайдбаре, где-то штук 30. Проблема в следующем: при попытке зайти на главную /files/ страница загружается 25-35 секунд! Иногда даже дольше. То есть нажали -> ждем полминуты, и потом страница моментально появляется.
Опытным путем установил, что проблема как раз заключается в сайдбаре с категориями. Попробовал вставить его на главную форума, получил ту же загрузку в полминуты. Без него загружается максимум за 2 секунды. Отмечу, что абсолютно все другие страницы сайта загружаются моментально, включая родительские категории с большим количеством подкатегорий и файлов.
Как я это вижу, могу ошибаться: при запросе главной страницы запрашиваются ВСЕ подкатегории файлового архива, отсюда тормоза и огромная нагрузка на сервер. Я попробовал найти корень проблемы, но знаний не хватает, смог только определить какой файл отвечает за вывод главной страницы, и возможный код, отвечающий за категории, и то уже не уверен, вдруг там еще хитрее как-то сделано.
Файл: /applications/downloads/modules/front/downlaods/browse.php
Код:
Я так думаю, нужно как-то попробовать сделать чтобы запрашивались только родительские категории, но ума не приложу как это сделать. Это при условии что проблема в этом конечно.
Изменено пользователем DevilDriver
Название темы