Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Я тока учусь, поэтому придумываю для себя всякие отфонарные задачки - вы уж не ругайтесь... Задача: Одна таблица, из которой делаются выборки клиентским приложением с условием по одному-двум-трем полям (т.е., задается либо одно поле либо два, либо три). Записей - более 60 тыс. Возможна ситуация, когда (особенно при поиске с условием по одному-двум полям) возвращается большое количество записей. Человеку, который сидит за компом - надобна только одна, и если возвращается более нескольких десятков записей, он просто не будет заморачиваться с поиском глазами по списку, а уточнит запрос. Получается, в данном случае выполнение запросов, возвращающих слишком большое количество записей просто не нужно, да и вредно - зачем прокачивать по шлангу несколько сотен записей, ежели человек их проигнорирует? Идея: Перед выполнением запроса оценить количество возвращаемых записей и сообщить его программе-клиенту, а она, сравнив его с неким значением, решала бы, выполнять запрос, или нет. Вопрос: Как это реализовать (интересует серверная часть)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 04:09 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Можно в хранимой процедуре сделать COUNT() по 1-2-3-м критериям и либо вернуть эти значения пользователю чтобы он выбрал колво критериев, либо запрограммировать сравнение и возращать уже рекордсет по частям или еще как-нибудь Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 05:32 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
2 _svr Вероятно вопрос возник именно из-за того, что задача отфонарная Вы совершенно справедливо заметили, что для того что бы юзер смог увидеть только нужные ему записи не надо тащить на клиента всю таблицу, но в реальной задаче, если все хорошо продумано у вас просто не возникнет подобного вопроса, потому что Вы точно будете знать как задать ограничения в запросе, просто в where у вас будут более строгие ограничения и не надо будет оценивать сколько записей возвращает запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 07:42 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
2Replicant: В общем, Вы подтвердили мои мысли, вот они: Две хранимые процедуры: 1.Считает количество записей по переданным в нее критериям. (как, кстати это сделать? select count(*) from ... where ...?) 2.Возвращает записи по переданным в нее критериям. Прога сначала вызывает первую, анализирует количество, и принимает решение - ругаться на юзверя, или вызывать вторую. Кстати, можно и несильно ругаться, а предупредить его, что записей слишком много, и возвратить десяток-два первых, сказав об этом и посоветовав уточнить критерии. Это верное решение? или существует более изящный вариант? 2Genady: >Вероятно вопрос возник именно из-за того, что задача отфонарная >...... >просто в where у вас будут более строгие ограничения и не надо будет оценивать сколько записей возвращает запрос Ну, скажем, не совсем отфонарная (я бы сказал, несколько упрощенная ) Долго думал, какой бы пример привести, и наконец придумал! Допустим, из нескольких полей-критериев - 2шт. такие: ФИО и Улица. К клиентскому приложению есть требование - максимальная скорострельность (помимо низкого трафика). Тут мы сталкиваемся с проблемой скорости заполнения юзверем полей-критериев. Юзверю всегда нужна только одна запись, причем мы имеем ввиду, что при заполнении десятка полей запроса он может где-нить и ощибиться, т.е., не получить вообще ничего. Поэтому разрешаем ему пользоваться нечеткими критериями, вываливая ему некоторое количество записей, но ограничивая это количество - так как при нескольких десятках записей он просто убъет время, выискивая нужную... Собственно, иллюстрация мысли: Ну зачем, спращивается, заполнять десяток полей запроса для фамилии "Суньмуньввунь", если в лучшем случае, будет возвращена всего одна запись? Или фамилия "Иванов". Без задания дополнительных критериев тут не обойтись, но и тут есть нюанс: в одном случае достаточно дополнительно задать улицу, если это переулок из нескольких домов, а в другом (Красный проспект в Новосибе, например ) - без заполнения доп. полей не обойтись. И это я придумал пример, когда логика понятна и может быть отработана на уровне мозгов юзверя (т.е., если в голове - не кость, то и не нужно реализовать мой алгоритм)... А если нет? Так что не все просто! Не, я не спорю, но, может быть, в моих рассуждениях есть капля здравого смысла? Ну хоть капелька? Ну а вообще-то, по большому счету, я согласен с Genady Спасибо за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 09:58 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
>Не, я не спорю, но, может быть, в моих рассуждениях есть капля здравого смысла? Ну хоть капелька? Есть, есть, не сомневайтесь Просто задач, когда критерии отбора неясны по моему не так уж много, ну а когда этих критериев просто много, тогда уже задача программиста обеспечить такой интерфейс, что бы юзер легко найти свою запись. З.Ы. Пример некогда придумывать, так что сорри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 10:12 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
IMHO Я правильного решения такой задачи нужно иметь дополнительные таблицы, которые будут содержать данные о распределении информации в вашей основной таблице. Потому что в Новосибирске конечно переизбыток Ивановых и очень мало Суньмуньввуньев, но в том же Китае скорее всего наоборот. А оценивать результаты запроса путем выполнения самого запроса, это неправильно. В том же SQL существует statistic, которая используется планировщиком запроса _до выполнения_ запроса. А данные для statistic система берет из самих таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 10:29 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
2 _svr: Задача хоть и "отфанарная", но, по-моему, решение существует уже давно. Вы ведь наверняка пользовались поисковыми системами в интернете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 13:47 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Может я все сильно упрощаю, но: SELECT TOP Константа_сколько_в_состоянии_осилить_пользователю_для_осознания_своей_неправоты_или_получения_искомого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 17:47 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Во-во, похоже, Павел попал не просто в точку, а в самую ее середину. Пока читал всю эту переписку, язык чесался. Но к сказаному Павлом добавить нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2002, 18:49 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
2Gennady: >Есть, есть, не сомневайтесь Это радует >З.Ы. Пример некогда придумывать, так что сорри Ничо страшного, предыдущей строчки достаточно 2Павел: >Может я все сильно упрощаю Да не, я ж такой вариант тоже рассматривал, напомню: ...а предупредить его, что записей слишком много, и возвратить десяток-два первых, сказав об этом и посоветовав уточнить критерии. 2Glory: Не совсем понял, как это все применить к моей задаче, но переспрашивать не буду - попробую почитать умные книги 2MadDog: Вот! Попробую-ка я сделать оба варианта - вариант с возвращением части записей и последующей руганью и Ваш вариант (первый, однако,проще ) Спасибо за ответы! 2Garya: Рад тебя слышать! Я c Access некоторое время уже завязал - теперь вот SQL мучаю (а также обитателей этой конфы) Все хотел тебе написать (пара махоньких вопросов есть), но не решался без разрешения. Можно? (на corbina или на chat?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2002, 01:34 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Совсем грубо моя идея выглядит так При занесении/обновлении записи в основной таблице происходит анализ новых данных. Конкретно для каждой уникальной(или уникальной в какой-то части) фамилии в отдельной таблице увеличивается счетчик(для старых данных соответственно уменьшается). Перед выполнением основного запроса по фамилии просто можно _предположить_, что запрос вернет именно столько записей и уже на основе этого предлагать пользователю варианты действия. Можно создавать/обновлять такого рода статистику и в офф-лайн, т.е. в период наименьшей активности пользователей. Конечно же в этом случае при запросах придется делать поправку на актуальность статистики. Вот так вкратце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2002, 07:00 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
>Можно? (на corbina или на chat?) Я тебя тоже рад видеть. Конечно можно. Только я в эти ящики теперь редко заглядываю. Пиши лучше сюда: agordienko@hms.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2002, 18:46 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Про select TOP. Не всегда хорошо при наличии сложных условий отбора или сортировке. Сервер сначала выберет весь млн. записей, отсортирует его, отрежет TOP 10 и пошлет клиенту. И так будет на каждое действие пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 08:24 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Сервер сначала выберет весь млн. записей, отсортирует его, отрежет TOP 10 и пошлет клиенту Субж!!! А как же тогда быть? Получается, минимизируем сетевой трафик, но грузим сервак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 08:37 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
На то он и сервер, не клиента же каждого заставлять это делать и проталкивать ему по сетке миллионы записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 09:57 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
TOP в SELECT можно использовать без указания сортировки, в каковом случае он работает, по косвенным признакам, аналогично SET ROWCOUNT а, точнее, как покойная в 2К опция FASTFIRSTROW, то бишь давая оптимизатору запросов быть оптимизатором . 2svr: Можно всегда возвращать TOP 10, при этом если на клиенте получены все эти 10 записей, то сообщить пользователю, что записей возможно больше, оставив за ним выбор действий. Допустим следующий вариант: дать пользователю самому ограничить число возвращаемых записей, а самому на клиенте формировать запрос с TOP на 1 больше. При получении записей на эту единицу больше, сообщить пользователю, что записей на самом деле больше, дав ему опять же право выбора, уточнив условия или увеличить количество записей. Насколько я понял вопрос, порядок сортировки непринципиален, более важно количество записей удовлетворяющих условию. В конце концов можно сортировать уже конечную выборку. И хотя предварительное вычисление COUNT по заданным критериям выполняется весьма быстро(при правильной индексации), при здравом размышлении оно обычно избыточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 11:02 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Это я к тому, что "выбрать первые 10 записей" может оказаться не такой уж дешевой операцией. Обычно нужна доп. инормация из др. таблиц. Вобщем, я использую что-то такое select * from др. таблицы where ... in (select top 30 from таблица с названиями where ....) Причем пользователь видит только 10 записей одновременно, это спасает в случае если вернулось <30 записей (получается как бы небольшой резерв для отображения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 01:55 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
2Dmitry: Спасибо огромное за информацию. Сначала напугался, потом, при здравом размышлении, понял, что по другому и не должно быть в случае с сортировкой. Буду иметь ввиду. Хотя, для поставленной задачи, это и не очень актуально - здесь порция записей используется, в основном, для демонстрирования юзверю титанических усилий проги по добыче информации И еще. Если у меня в запросе все критерии делаются по индексированным полям, то так ли уж нужна сортировка, ведь, по идее, набор должен быть упорядочен в соответствии с индексами? А вот вариант с интернет-liked решением. Т.е., есть грид с порцией записей, под ним пара кнопок "назад" - "вперед" (либо список типа 1-10, 10-20, 20-30...., динамически заполняемый в зависимости от числа записей). Каков алгоритм работы проги по добыванию порции, например, с 10 по 20 запись? Интересуют именно запросы к серверу, т.е., вместо TOP что-то вроде {from 10 to 20}. Такое возможно без лишних телодвижений (и доп. нагрузки на сеть/сервер)? ЗЫ: забавно, но несколько лет работы с Access задавался вопросом - нафига нужна эта фича - "TOP", т.е., не представлял себе реального применения, и на тебе, столкнулся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 05:17 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
IMHO Тут возможны два решения: техническое и методологическое. А возможно и оба. Не знаю на чем _serv пишет, но на ASP создается Recordset содержащий результаты выборки. Весь набор может быть разделен на страницы по 10, 17, 33564 и т.д. записей. Пользователь обращается к каждой странице по порядковому номеру .AbsolutePage, каковой можно обозвать как угодно: "Страница 2"... "Следующие 10 записей"... "Хочешь еще - Смотри сюды!" и т.д. (+) SQL Server после выполнения запроса отдыхает, трафик средний, время ожидания среднее. (-) IIS Server надрывается и грузится RedordSet-ами от разных запросов. Можно возвратить пользователю на клиента весь набор в Command и пусть у себя листает страницы. (+) И SQL и IIS отдыхают и режутся в карты, потери времени только на передачу набора, скорость листания после передачи высокая. (-) при больших объемах передача набора намного увеличивает траффик. И наконец третий способ: методологический. Есссно, что угадать что пользователь введет в поисковую форму до того как он отправил её серверу, у вас не выйдет. Значит ваша задача конкретизировать запрос с помощью серии страниц из которых формируется запрос. Это напоминает детскую игру где на каждый вопрос возможен только ответ: Да-Нет. Например: Ищется Вася Пупкин. Мужчина-Женщина? Капиталист-Рабочий? Наркоман-Спортсмен? Гей-Лесбиянка? (Впрочем это уже зависит от первого вопроса . Вообщем единственный способ заставить юзера что-то сделать - это не дать ему другого выбора. Но не переборщите - может ему это не так уж и нужно? Пошлет он ваш сервис с кучей вопросов куда подальше и сядет листать подшивку газет "Нива" за 1909 год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 06:38 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
2Axl_Dead: Угу, спасибо, поясняю: VB6 (в котором я тоже не очень - на стадии перехода от Access97, так что не ругайте за глупость). Так что ASP не подходит, а Ado'шный рекордсет вроде не бьется на страницы...(?) Тем не менее, как-то ведь это сделано в Access2000 (.adp)????? Более того, там в табличной форме этот алгоритм еще красивее сделан: с сервака пересылается только кусок результирующего набора записей, а когда юзверь скроллится к его концу, у сервера запрашивается следующий кусок и т.д. Все делается прозрачно для пользователя. Беда только в том, что весь этот механизм зашит глубоко в недрах Access, и как написать подобную форму в VB мне непонятно... Извините, если гонЮ - с Acc2k знакомство поверхностное - решил не вникать, взявшись за VB... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 07:37 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Если вы генерируете набор записей для экземпляра ADO объекта Recordset то можете разбивать его на записи. Это не имеет отношения к языку (ASP - это просто набор библиотек используемых Internet сервером для генерации запросов и страниц). Вот конкретный пример: ================================= set rsNews = Server.CreateObject("ADODB.Recordset") rsNews.Open Session("sql"), DB, 3, 3, 1 ' Кол-во записей на страницу rsNews.PageSize = 10 ' Номер страницы rsNews.AbsolutePage = 5 ================================= И все же возвращаясь к началу вопроса, вы интересовались тем как ограничить траффик, по другому говоря уменьшить кол-во данных возвращаемых в ответ на запрос. Это возможно сделать только грамотно построив форму запроса. Что касается подгрузки записей, то если бы у меня стояла такая задача, я бы искал какое-то событие типа "скролирования страницы", чтобы возбудить подгрузку. Беда в том что это уменьшает юзабилити. Юзеру понятно что шелкнув на кнопке, он должен подождать. А вот что пролистав страницу до конца, придется некоторое время сидеть с пустым экранном - это не так ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 08:57 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Я вот все прочитал и мне просто интересно, а как это вы собираетесь угодать чего собсно захочет запросить пользователь от сервака? Про то что хотелось бы листать пакетно RecordSet я согласен, но как быть если юзер хочет "быстрый" поиск, т.е. нажал "б", когда находится в поле ФИО, встал на ближайшую запись, которая начинается на "б", потом нажал на "а", встал на ... "ба" и т.д. Что каждый раз делать запросы к серверу? Я думаю удивлению юзеров тогда не будет предела. Ж ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 09:33 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Классно! Из ламерского вопроса такая интересная (для меня, по крайней мере ) дискуссия вышла!!! 2Vladimir: Топик длинный, и, видимо, к середине уже теряется нить. Вкратце: Из чего складывается время поиска инфы? 1.Забивка юзверем полей-критериев. 2.Обработка запроса сервером и получение инфы с сервака 3.Идентификация юзверем необходимой записи, если возвращено много (напомню, юзеру нужна только одна запись, причем ее определяют однозначно полная комбинация критериев отбора). Так как полей отбора много, то идем на поблажки, дабы минимизировать п.1, разрешая не заполнять все поля (имея при этом ввиду, что может быть запрос по неполным исходным данным). Если записей возвращается много, то просмотр юзверем всех возвращенных записей, чтобы найти искомую, напрочь съедает выигрыш, полученный в п.1, увеличивая и время выполнения п.2 Для этого и нужно все, что здесь обсуждается - возвращаем несколько записей, и просим уточнить критерии. Юзер заполняет еще одно-два-три поля (по ситуации), и получает искомое. Меня можно спросить - а не будет ли юзер постоянно уточнять поиск? Анализ моей базы позволяет оценить эту вероятность в 10-15%, т.е., для получения удобоваримого количества записей (7-10) в 85-90% случаев достаточно 1-2-х полей из 5... К сожалению этот процент уменьшается из-за того, что по придуманным мной условиям задачки, поиск идет по Like 'блаблаб%', а не по = >но как быть если юзер хочет "быстрый" поиск, т.е. нажал "б", когда находится в поле ФИО, встал на ближайшую запись, которая начинается на "б", потом нажал на "а", встал на ... "ба" и т.д. А вот в этом вопросе я титан Здесь - задача программиста - убедить юзверя, что это не есть гуд! и все дела! Этот вариант годится для несетевого приложения и на небольших объемах (ИМХО) - вываливаем на форму всю базу, на поле ФИО вешаем обработчик события Change, в которой делаем текущей записью первую, удовлетворяющую условию из поля, например, "Ивано*". В Access - это как два пальца об асфальт... В принципе, годится он и для моей задачи: Выборку делаем по 2-м самым важным полям, а на остальные поля - вешаем "быстрый поиск" уже по возвращенному набору. Но этот вариант не удовлетворяет условию из субжа! 2Axl_Dead: Спасибо огромное за пример, буду RTFM >А вот что пролистав страницу до конца, придется некоторое время сидеть с пустым экранном - это не так ясно. А вот тута можно выкрутиться: Допустим, на форме помещается 10 записей. Делаем пакет длинной в 30 записей. Для упрощения примем, что юзверь смотрит самые первые и начинает скроллиться вниз. Скроллинг идет с довольно медленной скоростью (с точки зрения компа). Отслеживаем, когда при прокрутке вниз нижней записью становится 20-я, и в этот момент подсасываем с сервака следующий пакет! Пока он доскроллится до конца первого пакета, второй уже тут-как-тут!!! Размер пакета и позицию начала подсоса следующего мона подобрать экспериментально... Так что проблемы-то и нет. Точнее, проблема в реализации... Может, мне стоит поковырять поплотнее VB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2002, 11:32 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Про автоподстановку. Mожно сымитировать почти быстрый поиск, когда оператор набрал часть слова и 0.2-0.5 сек не трогает клавиатуру, тогда запрос на сервер и подставляем как-будто на лету (подгружая для отображения новый select TOP) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2002, 09:15 |
|
||
|
О минимизации сетевого трафика... (вопрос для самообразования)
|
|||
|---|---|---|---|
|
#18+
Пару мыслей на мой взгляд совершенно упущенных из виду 1) Существует набор задач, когда пользователю действительно необходимо получение боьшого набора записей (и 10тыс, и 1 млн) а) критерий отбора может не поддаваться алгоритмизации б) после визуального просмотра списка данных, пользователь захочет получить по ним отчет 2) произошло смешение двух совершенно разных прцессов а) исполнение запроса б) собственно передача данных на клиента В разных системах программирования задача решается по разному, но по любому SQL сервер после исполнения запроса никуда и никому и никаких данных не передает, а ожидает дополнительных команд (обычно реализуемых клиентской частью SQL сервера) на передачу данных ПОЗАПИСНО на клиента. Сколько запросили столько и вернули. Нажал пользователь прокрутку страницы начитали еще порцию данных УЖЕ ОТКРЫТОГО запроса. Резюме: 1) Траффик зависит от настырности пользователя, но если он того захочет получит все записи. 2) SQL сервер не напрягают дополнительными запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2002, 06:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32020882&tid=1823987]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
89ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 434ms |

| 0 / 0 |
