Мишган

Рейтинг
73
Регистрация
01.12.2005

Хранить в базе, а в папке делать кэш.

Ёжик В Тумане:
Мишган, а не ужели все, что было в файле, нужно было грузить клиенту? Не было возможности разделять: на этой страницы нужен такой функционал, а на этой другой?
И еще технический вопрос: как же организовывались эти библиотеки, в какую структуру, и как работало?

Там было очень много разных толстых контролов. определять каждый раз необходимый набор контролов было в лом + разные зависимости.

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

Ayavryk:
Что-же это за монстр был. Если не секрет?

Ну что то типа майкрософтовских вебпродуктов. Ну очень жирный был клиент

Ayavryk:
ИМХО по поводу сжатия. Решает проблему отчасти. Броузер при загрузке страницы проверяет скрипт на синтаксические ошибки. Скорее всего проверяются и те которые закэшированы (не уверен, но по другому как?). Проверка жрет ресурсы. Соответственно чем меньше скриптов на стр. тем меньше нужно ресурсов.

Понятно что времени на разработку никогда__и__ни__у__кого не хватает, но имхо грамотное структурирование библиотек дало бы больший эффект чем сливание всего в кучу.

Исходники то были разделены, просто во время выкладывания на сервак сливались в один

Deni:
gogison, что продается то ? Скрипт? А кто и в течении какого времени будет осуществлять техподдержку?

Какой смысл вообще приобретать чужое творение с неизвестными глюками если за ту же сумму или даже дешевле можно построить тоже самое на другом проверенном движке с хорошей техподдержкой?

На каком движке если не секрет.

А если по теме: то весь сайт всего лишь набор справочников. Мне например непонятно зачем марки нужно вбивать в нескольких местах

topol:
как грузить сжатый JS? подскажите.

Да как обычный html жмете gzipом также и js. Протокол то один: HTTP

Ayavryk:
Стили страницы и javascript-код вынесены во внешние файлы. Количество таких файлов - минимально возможное.
Последнее совсем непонятно. Почему?
Если сайт очень разветвленый и имеет достаточно много всяких заморочек в виде JS и CSS почему все стилевые таблицы и JS нужно в один файл вбабахивать? М.б. наоборот? Лучше, когда уникальные JS подгружаются (и кэшируются) по мере надобности?

Был тут проект с богатым клиентом (имеется ввиду что сайт в браузере как нормальное приложение работает). Ясное дело ajax js по полной использовался. Файлов JS было на 1 мегабайт. Разбили все это хозяйство на красивые маленькие структурированные кусочки. Итого получилось 1000 файлов;-))

Вообщем первая страница грузилась полчаса:-). Покумекали, на этапе сборки слили 1000 файлов в один и его подключали из страницы. Страница стала грузится очень быстро (относительно конечно: получилось что нужно грузить один сжатый файл весом 100кило).

Но это крайний случай, а так конечно лучше дробить.

stealthy:
Да, идея понятна, но почему Вы считаете, что процесс построения страницы не работает в еще одном отдельном потоке, который просто обрабатывает данные? Он помещает их в определенный межпроцессный буфер, а вот из него уже другой процесс внутри сервера приложения (в нашем примере PHP движок под сервером) будет перегружать данные в сокеты. Именно он уже может ждать пока освободится канал, но он обязан работать независимо от процесса, который формирует данные, поскольку это вообще логически задачи разных слоев архитектуры. Если это не так - это ошибка в архитектуре сервера приложений. Я очень сильно сомневаюсь что найдется такой кривой application сервер, но если Вы можете доказать что он существует экспериментальными данными - давайте, мне самому интересно.

Вы надо мной издеваетесь? Вам ergo привел пример что у него разное время.

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

Попробуйте хотя бы написать скрипт отдающий пользователю гигабайтный файл. За какое время отработает данный скрипт? За время необходимое для прочтение данного файла с диска?

ЗЫ. Нужно понимать что буферы ввода/выводе нерезиновые.

ЗЫЫ. Любой вебсервер при определенных размерах генерируемого вывода заставит генерирующий поток ожидать (при условии что скорость генерации данных больше скорости передачи)

stealthy:
В зависимости от реализации. На том уровне о котором мы говорим (вывод страницы средствами веб-сервера, генерация данных - веб приложением) таким образом Вы буфер отправки не переполните. Напишите такой скрипт, покажите что буфер переполняется и скрипт тормозится отправкой данных, тогда будем спорить дальше.

На псевдо языке можно?

засечь время

записать в вывод 10 мульенов нулей

вывести время

могу на жабе

long t1 = System.currentTimeMillis();

byte[] data = new byte[10*1024*1024];

response.getOutputStream().write(data);

logger.info("Время: "+(System.currentTimeMillis()-t1));

stealthy:
Исходя из ваших утверждений получается что медленный клиент (например на модеме 1200 бод - у меня есть такой в коллекции) может очень нехило притормозить серверную процедуру? Тогда это была бы вешалка для любого хостинга.

Все верно только не понял почему вешалка?:-)) поток то обсуживающий данного клиента будет 99% времени своего исполнения ожидать доступности канала (т.е ничего не делать)

stealthy:
На кластере, само собой. Что никак не умаляет сложности задачи, решаемой группой разработки в то время, думаю Вы понимаете.

Хотелось бы все таки узнать поподробнее.

в utf-8 вроде размер html больше получается чем в 1251 изза того что русские буквы занимают 2 байта вместо одного. Но может и ошибаюсь

stealthy:
Попробуйте хотя бы себе объяснить, каким же интересно образом приложение будет медленнее генерировать код, если канал занят? С помощью какого интересно механизма будет медленнее или быстрее работать PHP (или любой другой язык взять) код, или код хранимой процедуры или SQL запроса в зависимости от занятости канала? Что, есть какие-то специальные каналы для посылки от стека TCP/IP в программу команд типа "а ну ка помедленнее, братишка, я печатать в сокет не успеваю"?

Слово многопотчность вам знакомо? А понятие блокирующей операции?

Если да.

Предположим что вы читаете из сокета. что будет если вы вызвали метод read а данных нет.

Предположим что вы пишете в сокет, что будет если вы вызвали метод write а исходящий буфер переполнен?

Правильный ответ: текущий поток перейдет в состояние ожидания.

ЗЫ. Кстати 6 лимонов показов в час это на одной машине или на кластере? Поподробнее пожалуйста. Уж очень интересно как добились такой производительности 7 лет назад

Всего: 874