+  HandyCache форум
|-+  Главная категория» Новые предложения» Предложения по работе скриптов
Имя пользователя:
Пароль:
Страниц: 1 2 3 4 [Все]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Предложения по работе скриптов  (Прочитано 41321 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« : 01 августа 2008, 10:25:42 »

Предлагаю не выделять скрипты как "государство в государстве", а встроить работу с ними в общую логику работы с программой:
- скрипты вызывать из соответствующих списков. Например, правило списка "Не обновлять" *in:dont_update_file_by_size ^handycache\.ru вызовет соответствующий скрипт обработки ответа для УРЛов офсайта. Если ни к какому другому списку скрипт не относится, включать его в "Серверы-посредники";
- hc_action и lua.lst убрать;
- переменную hc_header_replace заменить на script_fired - признак того, считается или нет скрипт сработавшим (по умолчанию false).
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #1 : 01 августа 2008, 12:08:33 »

Не буду говорить сразу нет, но идея мне на первый взгляд не понравилась. Давайте обсудим, может я и не прав.
Скрипты ведь существенно отличаются от правил, смешивание скриптов и правил приведет к непониманию и путанице. Правила работают с URL, скрипты пока с заголовками (кто знает может еще какие-то появятся). Техника работы со скриптами и правилами с точки зрения пользователя разные, требует разной квалификации. Далеко не все скрипты можно "прописать" в каком-либо списке, какие-то из них могут выполнять функции, свойственные сразу нескольким спискам. Захочешь изменить какой-то скрипт, искать его придется по всей программе.
Цитировать
- hc_action и lua.lst убрать;
Как же их убрать, если сам пишешь
Цитировать
Если ни к какому другому списку скрипт не относится, включать его в "Серверы-посредники";
Сейчас у нас вся работа со скриптами собрана в одном месте, скрипты для запросов и ответов группируются отдельно друг от друга. По моему это правильно.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #2 : 01 августа 2008, 14:58:34 »

Правила и скрипты - это обработчики HTTP-сообщений. Их сущность одинакова. Скрипты могут обрабатывать те же элементы сообщений, что и правила (УРЛ) и плюс к этому другие заголовки. В добавок скрипты могут делать еще чего-нибудь но опять же в привязке к обработке сообщений. С точки зрения их функцинирования, правила - частный случай скриптов. По сути, правила - это более удобная для пользователя запись скриптов определенного вида. Точно так же как запись правила с "+" - это более простая запись регэкспов определенного вида.
Есть общие глобальные категории действий с HTTP-сообщениями, которые лежат в основе логики работы НС: блокировать, не обновлять, писать в кэш, запрещать все это,... Имхо, логичным было бы, чтоб все, что относится к одной категории, находилось в одном месте.
Блокировка по УРЛ находится в списке Ч, блокировка по Content-Length в настройках, а по Content-Type или AnswerCode в Серверах-посредниках и во внешних файлах. Проще (пользователю), имхо, было б когда бы они находились в одном разделе, описывающем все случаи блокирования.
Точно так же по другим категориям. К примеру, не обновлять по УРЛ сейчас находим в списке Н, а не обновлять по Content-Length - в скрипте во внешнем файле, управление которым находится в серверах-посредниках.
Кстати, я за то еще, чтоб скрипты жили не в отдельных внешних файлах, а в тех же файлах, что и нынешние списки. В правиле даже не надо для них специальной лексики создавать (о которой я писал постом выше типа *in:dont_update_file_by_size ^handycache\.ru). В строке правила можно придумать маленькую кнопочку, нажав которую раскрывался б любой указанный в настройках редактор (например, Блокнот или встроенный) с возможностью правки содержимого.
Цитировать
- hc_action и lua.lst убрать;
Цитировать
Как же их убрать
А что при описанном раскладе может содержать hc_actiоn?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #3 : 01 августа 2008, 15:48:10 »

Цитировать
Правила и скрипты - это обработчики HTTP-сообщений. Их сущность одинакова.
Про сущность не согласен. Их назначение в какой-то мере совпадает, с этим соглашусь.
Ты же не предлагаешь слить все списки в один? А почему? Они же все обработчики HTTP-сообщений.
Цитировать
По сути, правила - это более удобная для пользователя запись скриптов определенного вида. Точно так же как запись правила с "+" - это более простая запись регэкспов определенного вида.
Это не так. Правила с "+" и без на самом деле почти одно и то же. Внутри НС правила с "+" преобразуются в правила без "+", так и существуют. Про скрипты ничего похожего не скажешь.
Цитировать
Есть общие глобальные категории действий с HTTP-сообщениями, которые лежат в основе логики работы НС: блокировать, не обновлять, писать в кэш, запрещать все это,... Имхо, логичным было бы, чтоб все, что относится к одной категории, находилось в одном месте.
Для тебя списки - это образ функций, а для меня списки - это инструменты. Скрипты - просто еще один вид инструментов. Я знаю какую работу я могу выполнить каждым из этих инструментов и знаю, где его искать.
Инструменты, встроенные в программу можно пересчитать, составить закрытый список. Составить же закрытый список всех функций я не возьмусь, о некоторых из них я могу даже не догадываться. Как же можно строить интерфейс на основе того, что нельзя даже пересчитать?
Цитировать
Блокировка по УРЛ находится в списке Ч, блокировка по Content-Length в настройках, а по Content-Type или AnswerCode в Серверах-посредниках и во внешних файлах. Проще (пользователю), имхо, было б когда бы они находились в одном разделе, описывающем все случаи блокирования.
В таком случае нужно вообще менять концепцию построения пользовательского интерфейса. Тогда нужно предлагать не сабж, а новый взгляд на интерфейс хотя бы сколько-нибудь продуманный и поднобно описанный.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #4 : 01 августа 2008, 16:26:37 »

Ты же не предлагаешь слить все списки в один? А почему? Они же все обработчики HTTP-сообщений.
Давно именно это и предлагаю. Но эта тема не об этом.
Цитировать
По сути, правила - это более удобная для пользователя запись скриптов определенного вида. Точно так же как запись правила с "+" - это более простая запись регэкспов определенного вида.
Цитировать
Это не так.
Хм... Какое правило невозможно повторить скриптом? Ответ - нет такого правила. Тогда в чем же смысл этих правил как не в предоставлении намного более удобной для пользователя формы обработки?
Цитировать
Как же можно строить интерфейс на основе того, что нельзя даже пересчитать?
Ошибаешься. Список полностью закрыт возможным набором значений переменной hc_action.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #5 : 01 августа 2008, 17:16:01 »

Цитировать
Хм... Какое правило невозможно повторить скриптом? Ответ - нет такого правила. Тогда в чем же смысл этих правил как не в предоставлении намного более удобной для пользователя формы обработки?
Когда я писал "Это не так", я имел ввиду, что нельзя сравнивать разницу между правилами с "+" и без него с одной стороны, и разницу между правилами и скриптами с другой. Ведь об этом же я там дальше пишу.
Скрипты нельзя рассматривать как замену правилам, все, что можно сделать правилами нужно делать правилами. Это и проще и менее ресурсоемко. А скрипты нужно использовать там, где правила не могут помочь.
Если согласиться с тем, что ты там написал, то нужно сначала поставить знак равенства между правилами с "+" и без, а следом приравнять правила и скрипты. Так вот с этим я и не согласен. Возможности скриптов гораздо богаче уже сегодня не говоря даже о их потенциальных возможностях. Да ты и сам это понимаешь, ведь ты же сам пишешь в первом сообщении
Цитировать
Если ни к какому другому списку скрипт не относится, включать его в "Серверы-посредники";
Цитировать
Ошибаешься. Список полностью закрыт возможным набором значений переменной hc_action.
Вероятно ты имеешь в виду функции скриптов (я там говорил о функциях всего НС). Но даже они не ограничиваются состоянием переменной hc_action. Уже сегодня можно изменить заголовок ответа, в следующей версии можно будет изменять заголовок запроса, отвечать клиенту прямо из скрипта, управлять ограничением скорости, управлять работой списков в зависимости от какого юзера поступил запрос, да и мало ли чего еще мы со временем придумаем.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #6 : 02 августа 2008, 19:16:22 »

Цитировать
Уже сегодня можно изменить заголовок ответа, в следующей версии можно будет изменять заголовок запроса, отвечать клиенту прямо из скрипта, управлять ограничением скорости, управлять работой списков в зависимости от какого юзера поступил запрос, да и мало ли чего еще мы со временем придумаем.
Это ж здорово, что скриптами можно делать что-то еще. Я вроде и не возражал против этого. Просто это "что-то еще" я пока отнес к hc_action="пусто". Волнует та часть скриптов, которая будет находиться в общей и без того немеряной куче и делать при этом операции (блокировать и др.), являющиеся основными в логике программы и уже имеющие свое средоточие в интерфейсе.
Как быть, когда у пользователя 100 скриптов? У каждого из этих ста свое имя файла на английском языке. Получится ли комфортно плыть в таком море? Будет скрипт, блокирующий такие-то УРЛы для пользователей таких-то, блокирующий такой-то Content-Type для пользователя такого-то, при запросе таких-то УРЛ блокирующий и подающий звуковой сигнал, блокирующий... Все это будут блокирующие скрипты в общей куче скриптов. Не проще ли пользователю их видеть и править в Черном списке? Список перестанет быть привязанным только к регэкспам, а будет сосредоточивать весь спектр условий, необходимых для реализации конкретной основной функции прокси-сервера (в данном случае, блокировки).
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #7 : 03 августа 2008, 11:38:31 »

Цитировать
Это ж здорово, что скриптами можно делать что-то еще. Я вроде и не возражал против этого.
Так вот я и хочу, чтобы этого "чего-то еще" было больше и пользователи скорее получили доступ к этим новым возможностям. Реализация этого твоего предложения довольно трудоемкая, а их полезность, по моему мнению, не покроет требуемых затрат времени.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #8 : 03 августа 2008, 19:25:55 »

- скрипты вызывать из соответствующих списков.
...
- hc_action и lua.lst убрать

Мне тоже не нравится эта идея. Один скрипт в зависимости от заголовков может выдавать совершенно разные действия, поэтому отнести его к какому-то одному списку нельзя. К примеру, скрипт save_or_block_403_and_404.lua выдает "save" или "stop" и поэтому в равной степени его можно отнести и к списку "З", и к списку "Ч". Если еще убрать hc_action, то такой скрипт вообще не сможет работать!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #9 : 04 августа 2008, 15:25:14 »

DenZzz
Такой скрипт нарушает доселе строившуюся логику программы. Если его разделить на два, то один был бы в Черном списке и при срабатывании сразу прекращал бы обслуживание любых дальнейших скриптов (блокирующих, необновляющих, пишущих в кэш). Второй исполнялся б только когда мы убедились, что этот ответ не блокируется и не берется из кэша и тоже обрубал бы дальнейшие скрипты. Это бы согласовывалось с общей логикой НС.
По нынешней логике, будут работать все нижележащие скрипты. Это неэффективно, да и непросто для освоения пользователем.

Теперь представь, что я хочу, чтоб ответы-404-не-картинки блокировались, и дальше никаких блокирующих, необновляющих, пишущих в кэш скриптов бы не выполнялось. А если 404 - это картинка, то пусть она грузится из интернет и сохраняется в кэш, но только если ее не блокирует на других основаниях какой-либо еще скрипт. Это то, чего я реально хочу от скрипта save_or_block_403_and_404. Как это сделать с учетом того, что ниже него я могу добавлять другие скрипты?

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

Еще прошу спрогнозировать в уме и распространить нынешнюю логику построения lua.lst на число скриптов около 100. Просто будет во всем этом разобраться? Будут ли эффективно выполняться скрипты (например, получится ли прекратить дальнейший заведомо бесплодный анализ кучи оставшихся скриптов после принятия решения о блокировке ответа скриптом "двойного назначения")?
« Последнее редактирование: 04 августа 2008, 15:36:42 от Михаил » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #10 : 04 августа 2008, 23:21:39 »

Если его разделить на два, то один был бы в Черном списке и при срабатывании сразу прекращал бы обслуживание любых дальнейших скриптов (блокирующих, необновляющих, пишущих в кэш). Второй исполнялся б только когда мы убедились, что этот ответ не блокируется и не берется из кэша и тоже обрубал бы дальнейшие скрипты.

И в большинстве случаев получим лишнюю двойную работу по проверке одних и тех же заголовков/условий в случае, когда "stop" в списке Ч не сработал! Это эффективно?

Цитировать
По нынешней логике, будут работать все нижележащие скрипты. Это неэффективно

Как уже упоминалось ранее, затраты ресурсов/времени на обработку скриптов мизерны...

Цитировать
А если 404 - это картинка, то пусть она грузится из интернет и сохраняется в кэш, но только если ее не блокирует на других основаниях какой-либо еще скрипт. Это то, чего я реально хочу от скрипта save_or_block_403_and_404. Как это сделать с учетом того, что ниже него я могу добавлять другие скрипты?

Внеси в нужные скрипты проверку на то, что переменной hc_action еще не было присвоено определенное действие. Как, например, я сделал в скрипте block_long_file.lua.

Цитировать
Еще прошу спрогнозировать в уме и распространить нынешнюю логику построения lua.lst на число скриптов около 100. Просто будет во всем этом разобраться?

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

Цитировать
Будут ли эффективно выполняться скрипты (например, получится ли прекратить дальнейший заведомо бесплодный анализ кучи оставшихся скриптов после принятия решения о блокировке ответа скриптом "двойного назначения")?

Можно ввести в скриптах какую-нибудь новую переменную, скажем, hc_stop_script, при присвоении которой значения "true" прекращать обработку следующих скриптов. Только нужно ли это...
« Последнее редактирование: 04 августа 2008, 23:26:02 от DenZzz » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #11 : 05 августа 2008, 09:57:57 »

Цитировать
И в большинстве случаев получим лишнюю двойную работу по проверке одних и тех же заголовков/условий в случае, когда "stop" в списке Ч не сработал! Это эффективно?
Получится эффективнее, чем сейчас. Блокирующий скрипт ставим в низ списка Ч, и он исполняется только если не сработала ни одна другая блокировка. Пишущий в кэш скрипт ставим в конец списка З, и он работает только когда ответ сервера не 200/301/302.
Цитировать
Как уже упоминалось ранее, затраты ресурсов/времени на обработку скриптов мизерны...
Все относительно. Они велики, например, по сравнению с затратами на выполнение правил. Если я правильно помню, выполнение кода скрипта в 5-700 раз (в зависимости от задачи) медленнее работы машинного кода. Эти затраты будут сказываться, учитывая сетевой характер приложения. Я не принимаю во внимание нынешнее положение, когда при каждом запросе скрипты заново читаются с диска и компилируются. Это вообще катастрофа для нагруженного сервера. Но я думаю, последняя проблема все же временная.
Выработанная до этого в НС логика списков заточена под экономию системных ресурсов. Сработавшее правило автоматически блокирует проверку остальных уже заведомо ненужных.
Цитировать
Не сложнее, чем разобраться в сотне правил. Можно сгруппировать скрипты по их назначению. Да и вообще, не представляю, зачем нужна сотня скриптов и почему нельзя проверку схожих условий сделать в одном скрипте.
Имхо, гораздо сложнее из-за того что порядок следования имеет значение, могут возвращаться разные hc_action. Группировать будет тяжело, если будут скрипты "двойного назначения". И сложнее писать новый скрипт, т.к. при его вставке пользователю приходится учитывать вопросы порядка следования и прослеживать состояние глобальных переменных. Когда скриптов 5-6, это не страшно. Но когда их много, думаю, может быть тяжко. Много же их должно быть, имхо, просто по определению, иначе зачем было затеваться.
Если же часть скриптов находится в списках, то они:
- не зависят от порядка следования;
- разгружают список оставшихся скриптов;
- выполняются не обязательно до "правил", а и посреди, и после;
- их легко и наглядно включать/отключать галкой в списке.
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #12 : 05 августа 2008, 10:31:47 »

На самом деле немножко не о том спорите. Регексп - это тоже скрипт на соответствующем языке.
И вызывать скрипты из правил в принципе неплохо. Но наверно имеет смысл сильно упростить формат вызова
Т.е. в поле "правило" вместо регекспа пишем <префикс>файл:функция, функция должна вернуть true/false (сработал/не сработал), акция определяется списком откуда вызван.
При вызове из непреобразующих списков (т.е. всех кроме "преобразования" и "переадресации") глобальные переменные - только на чтение.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #13 : 05 августа 2008, 11:26:19 »

В следующей версии в скрипты будут добавлены переменные
hc_cache_file_age
hc_cache_file_content_type
hc_cache_file_size
hc_method
hc_user_name
hc_user_from_internet
hc_user_from_cache
hc_user_to_internet
hc_user_speed_limit
hc_file_speed_limit
hc_answer_body
Думаю их смысл понятен по именам. Область применения скриптов расширится и будет расширяться дальше.
Все эти новые возможности не укладываются в существующие списки. Так стоит ли устраивать переполох, чтобы пристроить 10% скриптов?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #14 : 05 августа 2008, 12:14:53 »

Цитировать
Т.е. в поле "правило" вместо регекспа пишем <префикс>файл:функция, функция должна вернуть true/false (сработал/не сработал), акция определяется списком откуда вызван.
В точности об этом и говорю. Разница в деталях - предлагал не заморачиваться с файлами, а держать весь скрипт прям в списке.
Цитировать
В следующей версии в скрипты будут добавлены переменные
Отличная новость. Особенно про hc_answer_body.
Цитировать
Область применения скриптов расширится и будет расширяться дальше... Так стоит ли устраивать переполох, чтобы пристроить 10% скриптов?
Имхо, стоит. Только не переполох устраивать, а продумывать загодя, не допуская сваливания всего в трудноразгребаемую кучу и не забывая за расширением функциональности про вопросы эффективности программы, а также дружелюбности и простоты ее общения с пользователем и внутренней логической стройности.
Представь, что нынешние списки мы сольем в файл rules.lst. Будет хорошо?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #15 : 05 августа 2008, 12:34:31 »

Цитировать
Имхо, стоит. Только не переполох устраивать, а продумывать загодя, не допуская сваливания всего в трудноразгребаемую кучу и не забывая за расширением функциональности про вопросы эффективности программы, а также дружелюбности и простоты ее общения с пользователем и внутренней логической стройности.
Кто бы возражал, если бы твое предложение было универсальным? На самом же деле оно применимо только к небольшой части скриптов. При этом некоторые из них придется разбить на части или наложить другие ограничения. В результате на самом деле мы получим снижение эффективности, скрипты с похожим назначением, разбросанные по всем спискам. Какая у тут стройность?
Цитировать
Представь, что нынешние списки мы сольем в файл rules.lst. Будет хорошо?
Ну я то этого никогда не предлагал. Я вообще не сторонник резких телодвижений в данном случае потому, что для меня они закончатся большой работой. Мне больше нравится когда работы мало, а эффект большой.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #16 : 05 августа 2008, 17:53:34 »

Цитировать
В результате на самом деле мы получим снижение эффективности, скрипты с похожим назначением, разбросанные по всем спискам.
Если ты читал предыдущие посты, то знаешь, что этого не получится. И что эффективность ниже сейчас.
Цитировать
Я вообще не сторонник резких телодвижений в данном случае потому, что для меня они закончатся большой работой. Мне больше нравится когда работы мало, а эффект большой.
Можно выносить предварительно на обсуждение: "Хочу сделать так-то. Давайте помыслим, как это будет лучше". А сейчас да, я представляю, что не хочется что-то переделывать и одно это обеспечивает негативный угол зрения на предложения по изменению. Аргументы просто отбрасываются и все.
Утрируя, могу провести параллель (без обид), что проще всего дать пользователю С++ и пусть он сам все пишет. Гибкость максимальная, эффект большой, автору делать вообще ничего не надо. Только достаточно ли этих двух вещей для наслаждения пользования программой? Для меня - нет. Иначе я бы юзал сквид.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #17 : 05 августа 2008, 19:43:38 »

Цитировать
Если ты читал предыдущие посты, то знаешь, что этого не получится. И что эффективность ниже сейчас.
На самом деле в данном случае, как это обычно и бывает, есть и плюсы и минусы. Утверждать однозначно, что эффективность от  реализации твоего предложения повысится я бы не стал.
Цитировать
Можно выносить предварительно на обсуждение: "Хочу сделать так-то. Давайте помыслим, как это будет лучше".
Я так и делаю, когда чувствую, что сам по каким-то причинам не могу принять решения (советоваться вообще по всем вопросам, согласись, нереально). Свежий пример - проблема персонализации кэша. Что касается скриптов, то их появление было для всех сюрпризом, в том числе в какой-то мере и для меня. Утром я еще не знал, что вечером буду делать скрипты. У меня родилось вдохновение их сделать и если бы я не мог их сделать быстро, их бы не было совсем. И сейчас, мне не кажется, что они не на месте. Если работать с ними кому-то не сложно или не нравится, можно их просто игнорировать. На работу остальной части НС они никак не влияют (даже не увеличивают размер программы, достаточно убрать dll).
Цитировать
Аргументы просто отбрасываются и все.
Возможно я невнимательно читал, но я вижу один аргумент: желание управление каждой функцией сконцентрировать в одном месте. Если я ошибаюсь, то сформулируй, какие аргументы я пропустил.
Против самого этого желания я ничего не имею, желание справедливое. Однако реализация твоего предложения положения существенно не изменит, а работы потребует много.
Цитировать
Утрируя, могу провести параллель (без обид), что проще всего дать пользователю С++ и пусть он сам все пишет. Гибкость максимальная, эффект большой, автору делать вообще ничего не надо. Только достаточно ли этих двух вещей для наслаждения пользования программой? Для меня - нет. Иначе я бы юзал сквид.
Я же не писал, что не хочу делать вообще ничего. Просто из-за ограниченности времени я вынужден выбирать, что делать, что отложить, а от чего вообще отказаться. Можно, конечно, обещать сделать все. Все будут довольны, но недолго.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #18 : 09 августа 2008, 09:05:07 »

Тут еще подумалось. Может быть желание исполнить какое-то действие только после того как стало известно, что файл, например, не блокируется или что он, например, точно пишется в кэш, после того как он полностью загружен из сети и т.п. Имхо, полезно было б иметь и другие точки вхождения для скриптов, не только нынешние две. Это, пожалуй, сможет быть равносильным введению плагинной системы.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #19 : 09 августа 2008, 11:54:24 »

Может быть желание исполнить какое-то действие только после того как стало известно, что файл, например, не блокируется или что он, например, точно пишется в кэш, после того как он полностью загружен из сети и т.п.

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

После того, как стало известно, что файл:
  • не блокируется - и сейчас в сриптах ответов можно с ним делать, что угодно. Поставь последним скриптом и введи проверку на значение hc_action.
  • полностью загружен из сети - после драки кулакими не машут! Что ты хочешь делать, когда файл уже полностью загружен и передан клиенту?
  • пишется в кэш - аналогично. Что это меняет? Как влияет на наше решение?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #20 : 09 августа 2008, 14:35:01 »

Что делать, ограничивается лишь фантазией.
Примеры:
- после успешной скачки сообщить об этом кому-либо (визуально, звуком, e-mail'ом и т.п.), передать скачанный файл куда-либо;
- значимые события (заблокировано/нет, взято из кэша/нет/сколько и др.) на лету фиксировать независимым обработчиком статистики, способным представлять информацию в любых разрезах;
- выяснив, что для файла запрещена запись в кэш, удалить его из кэша, если он там есть (своего рода автоматический сбор мусора);
- если файл не попадает под Ч, Т, Н и нет соединения, то выдать файл из кэша автоматически либо спрося пользователя...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #21 : 09 августа 2008, 17:30:58 »

Еще есть одно значительное неудобство. К примеру, зажимаю горячую клавишу отключения списка Ч, а на блокирующие скрипты это не распространяется. Чтоб быть уверенным, что ничего не заблокируется, приходится вручную отключать все скрипты, в том числе которые и не хотелось бы отключать. Лезть же в файл и кратковременно выключить какой-то отдельный скрипт, чтоб через пару секунд его включать, видится вообще кошмаром. То же самое касается других списков.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #22 : 09 августа 2008, 18:38:11 »

- после успешной скачки сообщить об этом кому-либо (визуально, звуком, e-mail'ом и т.п.), передать скачанный файл куда-либо;

Это функции даунлодера. Не уверен, что это нужно для прокси.

Цитировать
- значимые события (заблокировано/нет, взято из кэша/нет/сколько и др.) на лету фиксировать независимым обработчиком статистики, способным представлять информацию в любых разрезах;

Помню была такая тема: "Интерфейс передачи активности монитора", но что-то быстро ее инициатор потерял интерес к воплощению этой идеи.

Цитировать
- выяснив, что для файла запрещена запись в кэш, удалить его из кэша, если он там есть (своего рода автоматический сбор мусора);
- если файл не попадает под Ч, Т, Н и нет соединения, то выдать файл из кэша автоматически либо спрося пользователя...

Это можно реализовать и из скриптов Ответов, только понадобятся соответствующие расширения функциональности.

Добавлено: 09 Августа 2008, 19:31:30

Чтоб быть уверенным, что ничего не заблокируется, приходится вручную отключать все скрипты

Я на Серверы-посредники горячую клавишу повесил, но дифференцированно отключать скрипты так не получится - только все сразу.

Хорошо бы сделать опцию: "Распространять горячие клавиши списков на действия скриптов"...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #23 : 13 августа 2008, 22:50:07 »

Было бы полезным, имхо, сделать точки входа в скрипты и непосредственно перед отправкой запроса серверу и ответа клиенту. Позволит регулировать вопросы серверов-посредников, внешних прокси, создавать собственные варианты ответов 403 и 404 вместо жестко забитых в НС, ответов при взятии из кэша и срабатывании переадресации. Позволит также быть уверенным в окончательном виде запросов/ответов, не опасаясь купюр от НС.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #24 : 13 августа 2008, 23:32:14 »

Пока не включаюсь в обсуждение этой проблемы, хочу сосредоточиться на ftp.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #25 : 14 августа 2008, 00:03:02 »

Позволит регулировать вопросы серверов-посредников, внешних прокси

Какие конкретно?

Цитировать
создавать собственные варианты ответов 403 и 404 вместо жестко забитых в НС

Для этого есть "Показывать файл" в списках Ч и Т. На скрипты они тоже распространяются.

Цитировать
ответов при взятии из кэша и срабатывании переадресации.

Ответы стандартные. Зачем их менять?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #26 : 14 августа 2008, 08:54:21 »

Цитировать
Какие конкретно?
Перекрывать/отменять действие списка "Серверы-посредники". Переключать серверы-посредники и внешние прокси в зависимости от иных условий, нежели совпадение URL (пользователь, время суток и др.);
Цитировать
Для этого есть "Показывать файл" в списках Ч и Т. На скрипты они тоже распространяются.
- хочется, к примеру, для ответа 403 выдавать ответ типа нынешнего, но на великом и могучем;
- для разных пользователей/сайтов могут быть разные объяснения, почему они блокированы;
- может не хотеться использовать коды 430 и 431. К примеру, если ниже НС стоит Сквид, то это приводит к заполонению лога Сквида предупреждениями о нестандартном коде ответа. На этом фоне выделить действительно полезную информацию в логе тяжело.
В подобных ситуациях "Показывать файл" бессилен.
Цитировать
Ответы стандартные. Зачем их менять?
Например, добавить распознавание по сигнатурам тех типов файлов, которые сейчас НС не распознает. Или перед переадресацией в определенных случаях делать паузу с выводом пояснения/подтверждения. Или добавить заголовок: Age, Date, Expires, Via, Vary, Warning для информирования клиента. Или скрыть, что ответ дает HandyCache...
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #27 : 14 августа 2008, 14:43:47 »

Почти все это можно реализовать на уровне скриптов запросов без создания новых точек входа! В частности, формировать любой нужный ответ с необходимыми заголовками и произвольным телом можно уже сейчас в бета-версии HC...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #28 : 14 августа 2008, 16:16:26 »

Почти все это можно реализовать на уровне скриптов запросов без создания новых точек входа! В частности, формировать любой нужный ответ с необходимыми заголовками и произвольным телом можно уже сейчас в бета-версии HC...
Гм... Мне казалось, что из перечисленного ничего эффективно реализовать сейчас не получится. Как это эффективно сделать сейчас по каждому из пунктов?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #29 : 14 августа 2008, 20:17:05 »

Как это эффективно сделать сейчас по каждому из пунктов?

Что подразумевается под понятием "эффективно"?

- хочется, к примеру, для ответа 403 выдавать ответ типа нынешнего, но на великом и могучем;
- для разных пользователей/сайтов могут быть разные объяснения, почему они блокированы;
- может не хотеться использовать коды 430 и 431.
- перед переадресацией в определенных случаях делать паузу с выводом пояснения/подтверждения.
- добавить заголовок: Age, Date, Expires, Via, Vary, Warning для информирования клиента.
- скрыть, что ответ дает HandyCache...

Все это можно сделать R-скриптом уже сейчас, но придется перенести нужные правила из Ч и П в LuaR.lst .

- Перекрывать/отменять действие списка "Серверы-посредники".
- Переключать серверы-посредники и внешние прокси в зависимости от иных условий, нежели совпадение URL (пользователь, время суток и др.);
- добавить распознавание по сигнатурам тех типов файлов, которые сейчас НС не распознает.

Это можно в будущем добавить в функциональность R-скриптов при желании...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #30 : 14 августа 2008, 20:51:06 »

Цитировать
Что подразумевается под понятием "эффективно"?
Под эффективностью имею в виду недопущение выполнения лишних действий. К примеру, что бы мы ни хотели сделать с серверами-посредниками или внешними прокси, делать это нужно лишь после того как принято решение о скачке из интернета. Или дополнительное распознавание по сигнатурам должно включаться только после принятия решения о взятии из кэша.
Цитировать
Все это можно сделать R-скриптом уже сейчас, но придется перенести нужные правила из Ч и П в LuaR.lst .
Не получится. Все списки Ч, П, А переносить в скрипты не будем.
Цитировать
- добавить заголовок: Age, Date, Expires, Via, Vary, Warning для информирования клиента.
- скрыть, что ответ дает HandyCache...
А здесь для изменения заголовка ответа при взятии файла из кэша мы бессильны что-либо сделать R-скриптом.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #31 : 14 августа 2008, 22:19:27 »

Цитировать
- добавить заголовок: Age, Date, Expires, Via, Vary, Warning для информирования клиента.
- скрыть, что ответ дает HandyCache...
А здесь для изменения заголовка ответа при взятии файла из кэша мы бессильны что-либо сделать R-скриптом.

Наоборот, всесильны! Можем в hc_answer_header написать любые свои заголовки, а в hc_answer_body написать путь к файлу в кэше (hc_answer_body="file=URLToCache(hc_url)") - клиент получит файл из кэша с любыми нашими заголовками!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #32 : 15 августа 2008, 00:48:23 »

Цитировать
Наоборот, всесильны
К сожалению, это не так. В большинстве ситуаций при взятии файла из кэша мне не надо полностью с нуля формировать весь заголовок ответа, мучительно продумывая и создавая в нем все необходимые поля. Пусть это делает НС. Нужно лишь добавить или убрать что-то одно оттуда. Например, убрать Server: HandyCache в ответе 200 From cache (HC) или добавить Expires в ответ 304 Not Modified (HC) и т.п. Я уж не говорю о случаях типа когда ответ в кэше запакован, а клиент не понимает gzip. И совсем плохо, что в попытке сделать как ты пишешь, списки Т и Н тоже придется полностью перемещать в скрипты, что не может даже рассматриваться.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #33 : 26 сентября 2008, 00:34:02 »

DenZzz
Можно тему перименовать в "Предложения по работе скриптов", новую неохота создавать.

1. В дополнение к предыдущему обсуждению (сделать несколько точек входа для скриптов). Хорошим применением скриптов стало бы кэширование GoogleEarth. Там надо обрабатывать файл (резать/клеить) скриптом после его записи в кэш.
2. Хочется распознавания типа контента и при отсутствии файла в кэше. Т.е. чтоб переменная hc_cache_file_content_type могла формироваться и в этом случае на основе URL. Сейчас она не определена.
3. Хочется знать, сжат файл в кэше или нет (Content-Encoding).
4. Если ответ формируется с помощью hc_answer_body, хочется видеть в мониторе привычное оформление (цвет строки и значки в зависимости от кода ответа).
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #34 : 26 сентября 2008, 08:13:55 »

5. Можно сделать, чтобы каждый раз не описывать функцию main (так сказать, в порядке уменьшения лишних телодвижений для пользователя). Если она жизненно нужна для НС, НС вполне может сам автоматически обрамлять скрипт
function main()
...
end
Преимуществом будет и то, что все описанные пользователем функции будут локальными и потенциально не смогут мешать одноименным функциям остальных скриптов.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #35 : 26 сентября 2008, 10:36:32 »

2. Хочется распознавания типа контента и при отсутствии файла в кэше. Т.е. чтоб переменная hc_cache_file_content_type могла формироваться и в этом случае на основе URL. Сейчас она не определена.

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

Цитировать
3. Хочется знать, сжат файл в кэше или нет (Content-Encoding).

Цель?

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

Чем они могут мешать? Одинаковыми переменными?
Все переменные в Lua являются глобальным, если они явно не объявлены как локальные. Поэтому неважно, где выполняется функция. Если используются одинаковые глобальные переменные, то они станут доступны всем скриптам.
В этом есть и свое преимущество: когда выполняется много однотипных скриптов, то объявление функций и присвоение переменных рационально вынести в один первый скрипт.
Сообщить модератору   Записан
4water
Гость
« Ответ #36 : 27 сентября 2008, 23:35:05 »

пытаюсь осваивать скррипты
непойму если hc_answer_header задать значение а hc_answer_body нет- будет мой заголовок и "родное" тело?
и если сделать наоборот- будет мое тело при родлном заголовке?
хелп сделан так что не дает этот ответ
расскажите пжалста
и пжалста еще- зачем задумано присваивать hc_header_replace почему просто не изменить hc_header?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #37 : 28 сентября 2008, 00:09:41 »

непойму если hc_answer_header задать значение а hc_answer_body нет- будет мой заголовок и "родное" тело?

Что такое "родное тело" и откуда оно возьмется, если ты сам формируешь ответ скриптом?!
Будет только твой заголовок без тела.

Цитировать
и если сделать наоборот- будет мое тело при родлном заголовке?

Не будет. Твое тело без заголовка будет просто игнорироваться.

Цитировать
хелп сделан так что не дает этот ответ

Дает. Читай внимательно!

Цитировать
и пжалста еще- зачем задумано присваивать hc_header_replace почему просто не изменить hc_header?

Чтобы на выходе HC точно знал, изменил ли скрипт заголовок, а не тратил время и ресурсы системы на сравнение заголовков.
« Последнее редактирование: 28 сентября 2008, 00:17:50 от DenZzz » Сообщить модератору   Записан
4water
Гость
« Ответ #38 : 28 сентября 2008, 00:32:03 »

Цитировать
Дает. Читай внимательно!
не вижу
пользуюсь HC_Lua_scripts.html
других более подробных справок не нашел дайте ссылок
Цитировать
Чтобы на выходе HC точно знал, изменил ли скрипт заголовок, а не тратил время и ресурсы системы на сравнение заголовков.
сравнение с начальным заголовком?
почему бы ничего не сравнивая посылать hc_header- измененный или нет неважно
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #39 : 28 сентября 2008, 00:46:34 »

не вижу
пользуюсь HC_Lua_scripts.html

Там и написано - в описании переменных hc_answer_body, hc_answer_header.

Цитировать
почему бы ничего не сравнивая посылать hc_header- измененный или нет неважно

Важно, когда будешь ловить глюки и гадать, что так испортило заголовки - скрипт или сам клиент (браузер). Сейчас информация об изменении заголовка выводится в Монитор HC, а при твоем подходе мы об этом никогда не узнаем без сниффера! А в чем вообще проблема? Так трудно присвоить значение "true" переменной hc_header_replace?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #40 : 28 сентября 2008, 00:57:17 »

Цитировать
почему бы ничего не сравнивая посылать hc_header- измененный или нет неважно
Неважным это выглядит на первый взгляд. Если НС станет всегда манипулировать с заголовком даже если это и не нужно (а изменение заголовка не самая частая операция при использовании скриптов), это приведет к лишней нагрузке на машину (операции со строками являются относительно ресурсоемкими, они требуют выделения памяти, копирования содержимого с места на место).
Сообщить модератору   Записан
4water
Гость
« Ответ #41 : 28 сентября 2008, 01:37:44 »

Цитировать
Там и написано - в описании переменных hc_answer_body, hc_answer_header
там той информации что ты написал постом назад просто нет
Цитировать
А в чем вообще проблема? Так трудно присвоить значение "true" переменной hc_header_replace?
да
проблемно как-то это выглядит
изменил заголовок и могу надеяться что эти изменения заакцептятся ан нет- подтвердить дополнительно надо не забыть

и еще проблемно для восприятия выглядит hc_header и hc_answer_header
что будет если оба будут иметь значение?
можно б использовать hc_request_header и hc_answer_header- и не запутаешься и не пропадает информация о заголовке запроса
Цитировать
Неважным это выглядит на первый взгляд. Если НС станет всегда манипулировать с заголовком даже если это и не нужно (а изменение заголовка не самая частая операция при использовании скриптов), это приведет к лишней нагрузке на машину (операции со строками являются относительно ресурсоемкими, они требуют выделения памяти, копирования содержимого с места на место).
в свете того что нужно сравнить заголовок с исходным чтобы отразить это в мониторе это потребует каких-то затрат
но сравним их с затратами на исполнение сотен регэкспов- это ничто
взять даже заголовок 3 кБ что встретишь крайне редко (обычно до 1 кБ)
команда сравнения двух массивов типа CMPS ассемблера выполнится за столь ничтожное время что не успеет сработать даже один регэксп
а вот забыть присвоить переменной hc_header_replace значение это очень просто
да и просто ее наличие это дополнительная обуза
и неадекватно если заголовок не трогать, изменить hc_header_replace а монитор напишет что заголовок менялся

совершенно другое дело читать перед каждым скриптом кэш что сделано в новой версии
почему здесь не обратили внимание на затраты?
а они изрядные если используешь сетевой кэш
скорость работы программы замедляется на порядок и она превратилась в тормоз при 4 пользователях
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #42 : 28 сентября 2008, 02:35:12 »

4water
По поводу оправданности наличия переменной hc_header_replace не вижу особого смысла продолжать спор вот по какой причине. Доводы в пользу наличия или отсутствия этой переменной можно приводить долго, но не думаю, что одна из сторон сможет победить за явным преимуществом. Обсуждать этот вопрос имело бы смысл до того как НС в данной версии стал публичным. А на сегодня наличие переменной hc_header_replace стало фактом и для изменения этого положения должны быть веские причины.
Цитировать
совершенно другое дело читать перед каждым скриптом кэш что сделано в новой версии
почему здесь не обратили внимание на затраты?
а они изрядные если используешь сетевой кэш
скорость работы программы замедляется на порядок и она превратилась в тормоз при 4 пользователях
Согласен - проблема существует. Хотя краски в какой-то мере тобой сгущены. НС читает кэш, но не перед каждым вызовом скрипта, а только если на данный момент информация о нужном файле у него отсутствует. Однажды получив эту информацию (а она бывает нужна не только перед вызовом скрипта, но также при работе со списками и другими опциями), НС сохраняет ее в RAM-кэше и в дальнейшем берет ее оттуда.
В данном случае я буду благодарен тебе или кому угодно за хорошие предложения по смягчению проблемы.
В любом случае тебе спасибо за аргументированную критику.
« Последнее редактирование: 28 сентября 2008, 03:06:39 от mai62 » Сообщить модератору   Записан
4water
Гость
« Ответ #43 : 28 сентября 2008, 10:52:41 »

Цитировать
Обсуждать этот вопрос имело бы смысл до того как НС в данной версии стал публичным. А на сегодня наличие переменной hc_header_replace стало фактом и для изменения этого положения должны быть веские причины.
это бета
факта еще ни одного нет, все в руках создателя,можно и нужно пробовать все
если евыявляются неудобства почему бы не принять это в расчет и не ликвидировать их при наличии кворума
вопрос не высосан из пальца- я реально забываю присваивать эту переменную Улыбка
если hc_header_replace сейчас отменить то это реально не повлияет работу сущесьвующих скриптов
Цитировать
Хотя краски в какой-то мере тобой сгущены.
ну как сгущены- это очень сильно бросается в глаза мгновенная загрузка раньше и неспешная постепенная сейчас
не знаю может на какихто супер быстрых и незагруженных сетях это не так но на моем 100 мБит просто крах надежд интерсно увидеть еще отзывы о новой версии при использовании с сетевым кэшем, в форуме не смог увидеть?
пришлось с новой версией убирать дополнительный кэш и менять конфигурацию
мог бы и оставить старую версию но новые скрипты много хорошего дают
уже сам написал пару и доволен
Цитировать
В любом случае тебе спасибо за аргументированную критику.
те неудобства о которых писал с ними будет сталкиваться каждый
не хочу навязывать мнение но оно есть такое после начала реальной практики писания скриптов
если у остальных противоположные взгляды нестрашно я думаю может быть не безразличен любой взгляд со стороны

сейчас пишу скрипт и увидел что переменные которые иниции\ализировал в скрипте запроса не доживают до скрипта ответа
тоже неудобно прошу рассмотреть возможность сделать чтоб они жили все время существования запроса

еще прошу можно сделать чтобы не обязательно вводить e-mail при отправке поста
это типа hc_header_replace дополнительная и по моим ощущениям ненужная забота для юзвера

mai62 молодец отличная программа и к тому же развивающаяся
многих возможностей не встречал нигде больше
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #44 : 28 сентября 2008, 11:51:27 »

В данном случае я буду благодарен тебе или кому угодно за хорошие предложения по смягчению проблемы.

Пожалуй, единственно возможное решение проблемы - это уже обсуждаемое ранее индексирование кэша, которое позволит существенно снизить количество обращений к диску. Но обратная сторона медали - трудности для любителей ручного добавления/удаления файлов в кэш, хотя польза от индекса все равно перевешивает в плане повышения производительности и расширения функциональности HandyCache в будущем!

еще прошу можно сделать чтобы не обязательно вводить e-mail при отправке поста

Зарегистрируйся на форуме и этой проблемы не будет! Кроме того, скоро эта тема будет присоединена к параллельной: "Предложения по работе скриптов" в разделе "Новые предложения". Гостем ты писать там вообще не сможешь.
Сообщить модератору   Записан
4water
Гость
« Ответ #45 : 29 сентября 2008, 00:00:31 »

не удобно получается вставлять заголовки потому что hc_header оканчивается на \r\n\r\n
если сделать оканчивающийся на один \r\n то можно легко писать hc_header = hc_header .. "my header: my value\r\n"
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #46 : 29 сентября 2008, 10:18:09 »

не удобно получается вставлять заголовки потому что hc_header оканчивается на \r\n\r\n

Вообще-то это требование стандарта. Только не говори, что HC должен удалить двойной \r\n , а потом его опять вставить, чтобы тебе было проще писать скрипты...

Цитировать
если сделать оканчивающийся на один \r\n то можно легко писать hc_header = hc_header .. "my header: my value\r\n"

Сделай в скрипте замену: "\r\n\r\n" на "\r\nmy header: my value\r\n\r\n" - если так надо в конец добавить:
   string.gsub(hc_header, "\r\n\r\n", "\r\nMy header: my value\r\n\r\n", 1)

Вообще, можешь свои заголовки хоть сразу после первой строки вставлять.


P.S. А что там у тебя с регистрацией на форуме? Долго эта тема в Гостевом разделе жить не будет...
Сообщить модератору   Записан
4water
Гость
« Ответ #47 : 29 сентября 2008, 11:59:39 »

Цитировать
Вообще-то это требование стандарта.
такого быть не может
это просто так принял автор программы и мне кажется будет удобнее это чуть подправить
Цитировать
Только не говори, что HC должен удалить двойной \r\n , а потом его опять вставить, чтобы тебе было проще писать скрипты...
"должен" я не говорю думаю что уместно сказать "лучше", "удобнее пользователю" не только мне лично
оцени наглядность и удобство одного и второго
сравни также еще затраты (правда это мелочи)
мне вот интересно несет ли какой-то практический смысл передача hc_header сс двумя \r\n на конце? если этио для чего-то задумывалось то интересно услышать для чего а если просто так и никому не нужно то лучше так не передавать
Цитировать
Вообще, можешь свои заголовки хоть сразу после первой строки вставлять.
не вижу случаи когда это может понадобится но если вдруг понадобится сделаю именно так
Цитировать
А что там у тебя с регистрацией на форуме? Долго эта тема в Гостевом разделе жить не будет...
пока все также- никак
жду в этом разделе обещали помочь
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #48 : 29 сентября 2008, 16:59:52 »

Цитировать
Вообще-то это требование стандарта.
такого быть не может

Чего не может? RFC2616 почитай! После последнего заголовка должна быть пустая строка, иначе сервер будет ждать продолжения запроса.

Цитировать
"удобнее пользователю" не только мне лично

Лично мне без разницы! Скрипт пишется раз, а потом сам работает и внимания более не требует.
Затраты меньше сейчас, т.к. HC не надо лишний раз вырезать \r\n , а потом опять его добавлять.

Цитировать
Цитировать
Вообще, можешь свои заголовки хоть сразу после первой строки вставлять.
не вижу случаи когда это может понадобится но если вдруг понадобится сделаю именно так

А вставлять именно в конец - это что жизненная необходимость такая? Какая разница?
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #49 : 29 сентября 2008, 17:32:42 »

спасибо большое что зарегистрили!

Цитировать
Чего не может? RFC2616 почитай! После последнего заголовка должна быть пустая строка, иначе сервер будет ждать продолжения запроса.
после заголовка должна быть но какое отношение это имеет к самому заголовку?
Цитировать
Затраты меньше сейчас, т.к. HC не надо лишний раз вырезать \r\n , а потом опять его добавлять.
gsub- каждый раз будет делаться поиск по шаблону, раздвижка строки и вставка
..- а так просто конкатенация
передаваться и приниматься программой юудет строка на 2 байт меньшая, все операции с ней в любом скрипте будут на 2 символа короче
отсюда и затрат меньше
Цитировать
А вставлять именно в конец - это что жизненная необходимость такая? Какая разница?
нет только ради простоты
если нет разницы в итоге, почему не делать проще?

еще нарвался на такое дело- это не страшно просто надо иметь ввиду делюсь наблюдением:
нельзя полагаться на то что переменные как везде в lua изначально равны nil
здесь получакется надо любую переменную или явно инициализировать или делать локальной потому что предыдущий скрипт мог оставить в ней все что угодно
« Последнее редактирование: 29 сентября 2008, 17:41:32 от 4water » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #50 : 29 сентября 2008, 19:37:35 »

Цель?
Например, для реализации предложения из ToDo:
Для исключения потерь времени при использовании в качестве родительского сжимающего сервиса типа WebWarper, Toonel, Cproxy добавить возможность создания условного родительского прокси, реагирующего на наличие/отсутствие на странице GZip-сжатия
Если файл в кэше не сжат, то запрос отправить, например, на Toonel или WebWarper.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #51 : 29 сентября 2008, 20:09:21 »

нельзя полагаться на то что переменные как везде в lua изначально равны nil
здесь получакется надо любую переменную или явно инициализировать или делать локальной потому что предыдущий скрипт мог оставить в ней все что угодно

Да, в этом есть и свои плюсы - можно значения переменных предыдущего скрипта использовать в следующем и сэкономить ресурсы на их повторной обработке. Ты же сам недавно предлагал вообще "рассмотреть возможность сделать чтоб они жили все время существования запроса"...



Если файл в кэше не сжат, то запрос отправить, например, на Toonel или WebWarper.

А если сжат, то где гарантия, что он в предыдущий раз не грузился через WebWarper, поэтому и был им сжат?!
А если включена опция "Распаковывать gzip/deflate файлы перед записью в кэш", то все файлы в кэше будут не сжаты. Будем все грузить через Toonel без разбора?

Не, тут нужен другой подход - как у Проксомитрона: при получении несжатых данных писать имя сайта в файл-список, а при повторном заходе проверять этот список и принимать решение об использовании сжимающих серверов.
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #52 : 29 сентября 2008, 22:00:56 »

Цитировать
Да, в этом есть и свои плюсы - можно значения переменных предыдущего скрипта использовать в следующем и сэкономить ресурсы на их повторной обработке. Ты же сам недавно предлагал вообще "рассмотреть возможность сделать чтоб они жили все время существования запроса"...
да я и не был против этого
во всех букварях по lua пишется что по умолчанию переменные равны nil
в скриптах так не будет дошел до этого собственным опытом в справке этого не было
пост написал для того чтобы поделиться с другими- чтоб не делались ошибки
можно и в справке это указать
а минусов этого вобще ни одного не вижу
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #53 : 29 сентября 2008, 22:15:04 »

в справке этого не было

Прям, как в поговорке: "Смотришь в книгу - видишь фигу!":
Цитировать
Если запускается несколько скриптов подряд, то очередному скрипту передаются глобальные переменные в том виде, в каком они остались после выполнения предыдущего скрипта.
Не первый раз уже. Может, стоит внимательнее читать Документацию?  Читай доки!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #54 : 29 сентября 2008, 22:30:37 »

А если включена опция "Распаковывать gzip/deflate файлы перед записью в кэш", то все файлы в кэше будут не сжаты. Будем все грузить через Toonel без разбора?
Хм... Ты думаешь, я как администратор не знаю, включена ли у меня такая опция или нет?
Цитировать
Не, тут нужен другой подход - как у Проксомитрона: при получении несжатых данных писать имя сайта в файл-список, а при повторном заходе проверять этот список и принимать решение об использовании сжимающих серверов.
Могу тоже подкинуть "если...". К примеру, что если этот файл захотят читать/менять одновременно несколько скриптов/потоков? Что если файл вырастет до сказочных размеров?
У такого подхода существенный недостаток - затратность.
То, что предлагаю, будет как часы и без каких-либо затрат работать как минимум с Тунелем.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #55 : 29 сентября 2008, 22:58:25 »

Хм... Ты думаешь, я как администратор не знаю, включена ли у меня такая опция или нет?

Хм... Я понимаю, что удобнее было ответить вопросом и причем только на вторую половину моего вопроса, но как все-таки быть со страницами, сжатыми ранее WebWarper-ом?
А что, переменная эта только для тебя создается? И те, кто распаковывает GZIP в кэше, не попадут в группу "избранных"?

Цитировать
То, что предлагаю, будет как часы и без каких-либо затрат работать как минимум с Тунелем.

Без каких-либо затрат? А выяснение атрибутов файла и типа сжатия с потолка возьмется, что ли?

Добавлено: 29 Сентября 2008, 23:52:43

Да и все равно, скрипты пока не умеют управлять "Внешними проксями".
« Последнее редактирование: 29 сентября 2008, 23:05:09 от DenZzz » Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #56 : 29 сентября 2008, 23:12:49 »

Цитировать
Прям, как в поговорке: "Смотришь в книгу - видишь фигу!":
правду говорят дурной пример заразителен
посмотрел я на тебя убеждавшего что там есть то чего нет- и тоже перестал тщательно справку читать
Цитировать
Не первый раз уже.
можешь смело обнулить счетчик Улыбка
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #57 : 30 сентября 2008, 00:05:39 »

Цитировать
Хм... Я понимаю, что удобнее было ответить вопросом и причем только на вторую половину моего вопроса, но как все-таки быть со страницами, сжатыми ранее WebWarper-ом?
Не готов к разговору о WebWarper и CProxy. Не пользую. Поэтому рецепта тебе подсказать не могу. Даже не могу сказать, будет ли он отличаться от рецепта для Тунеля.
Цитировать
А что, переменная эта только для тебя создается? И те, кто распаковывает GZIP в кэше, не попадут в группу "избранных"?
Хм... Чем-то повеяло почти забытым...
Пусть будут иметься в виду те, кто пользует Тунель и не распаковывает GZip в кэше. Ты думаешь, это буду я один?
А теперь представь себе другую "группу избранных", которым несущественны накладные расходы. И они готовы хоть с каждым запросом читать целиком большой файл, искать в нем запись, дописывать если не нашли и сохранять обратно. И все это непрерывно синхронизируя с остальными желающими равноправного доступа.
Цитировать
Без каких-либо затрат? А выяснение атрибутов файла и типа сжатия с потолка возьмется, что ли?
Это и так уже делается - читается Content-Type, а значит и все остальное. То, что я предлагаю, можно попробовать реализовать уже сейчас и без всяческих дополнительных затрат.
Цитировать
Да и все равно, скрипты пока не умеют управлять "Внешними проксями".
Это на первых порах можно попробовать перехитрить. А там и штатные средства поспеют.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #58 : 30 сентября 2008, 00:53:56 »

Пусть будут иметься в виду те, кто пользует Тунель и не распаковывает GZip в кэше. Ты думаешь, это буду я один?

А сколько вас? Кто считал? Не нужно опять возвращаться к аргументам типа: "Так лучше всем, я знаю!"...

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

Я так понимаю, что этот камень в огород Проксомитрона...

Цитировать
Цитировать
Да и все равно, скрипты пока не умеют управлять "Внешними проксями".
Это на первых порах можно попробовать перехитрить.

Каким образом "перехитрить"?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #59 : 30 сентября 2008, 05:44:04 »

А сколько вас? Кто считал? Не нужно опять возвращаться к аргументам типа: "Так лучше всем, я знаю!"...
А сколько пользуют, к римеру, "Не загружать большие файлы", "Ограничить скорость загрузки", "Распаковывать перед записью в кэш" и т.д. и т.п.? Ты уверен, что все до одного пользователи? Или взять скрипт _block_external_links, думаешь, каждый его будет пользовать? Не достаточно ли того, что это будет заведомо многочисленный круг?
Цитировать
Каким образом "перехитрить"?
Пометить URL как-нибудь безобидно, а потом условным прокси эту пометку найти.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #60 : 30 сентября 2008, 10:27:12 »

А сколько пользуют, к римеру, "Не загружать большие файлы", "Ограничить скорость загрузки", "Распаковывать перед записью в кэш" и т.д. и т.п.?

Их могут пользовать ВСЕ, кто изъявит такое желание, а не только те, кто входит в какую-то ограниченную группу по каким-то там критериям! А у твоего предложения пользователи WebWarper и "распаковывающие кэш" - уже в пролете. Уверен, найдутся еще "изгои"...

Не достаточно ли того, что это будет заведомо многочисленный круг?

Зачем делать для какого-то заведомо ограниченного круга, когда можно сделать сразу для всех?!

При подходе Проксомитрона не обязательно открывать файл-список отдельно каждым потоком и пытаться каждый раз сохранять его на диск! Можно же один раз загрузить список в память, там его обрабатывать и временами сохранять на диск или выгружать за ненадобностью. В Проксомитроне эта проблема как-то решена. И у HC в Серверах-посредниках сейчас успешно работают файл-списки, практически не вызывая тормозов. Можно даже БД какую-нибудь прикрутить для ускорения обработки.

Добавлено: 30 Сентября 2008, 11:12:55

Да, конечно, это реализовать сложнее, но и применимость гораздо выше! И не только для сжатия. Раньше уже высказывались предложения использовать файл-списки в списках для группировки и удобства добавления большого количества имен сайтов, в т.ч. экспортированных из других программ.
« Последнее редактирование: 30 сентября 2008, 10:32:07 от DenZzz » Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #61 : 01 октября 2008, 17:09:31 »

скриптом ввел пользователям дневной лимит трафика
пользователь ставит на скачивание громадный файл и уходит
лимит заканчивается гдето посредине этого файла а скрипт сработать не может потому что новых запросов нету
недодать положеное не имею права забирать завтрашним днем тоже
обрубить или заморозить до близости нулю скорость для пользователя посреди этой скачки скрипты не предоставляют
предлагаю продумать и такую возможность регулировать в программе
Сообщить модератору   Записан
zed
Постоялец
***

Репутация: +4/-0
Offline Offline

Сообщений: 141


« Ответ #62 : 01 октября 2008, 17:38:55 »

нужно проверять размер файла перед загрузкой, и если размер больше, чем оставшийся лимит - не загружать файл
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #63 : 01 октября 2008, 21:17:10 »

Цитировать
нужно проверять размер файла перед загрузкой, и если размер больше, чем оставшийся лимит - не загружать файл
увы не подходит
недодать положеное не имею права возмущению обществености не будет пердела
Сообщить модератору   Записан
zed
Постоялец
***

Репутация: +4/-0
Offline Offline

Сообщений: 141


« Ответ #64 : 01 октября 2008, 21:31:52 »

обрубить или заморозить до близости нулю скорость для пользователя посреди этой скачки скрипты не предоставляют
предлагаю продумать и такую возможность регулировать в программе
А если обрубить или заморозить скорость, то при отсутствии возможности докачки, весь смысл может потеряться.
В твоём случае - идеальный вариант - внешний шейпер (присмотрись к BWMeter).
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #65 : 01 октября 2008, 22:16:32 »

Цитировать
А если обрубить или заморозить скорость, то при отсутствии возможности докачки, весь смысл может потеряться.
да но это уже личная проблема пользователя а не моя
Цитировать
В твоём случае - идеальный вариант - внешний шейпер (присмотрись к BWMeter).
спасибо буду смотреть
Добавлено: 01 Октября 2008, 21:41:48

прочел про BWMeter- отлично подходит
как его пристыковать чтобы манипулировать трафиками пользователей НС?
Сообщить модератору   Записан
zed
Постоялец
***

Репутация: +4/-0
Offline Offline

Сообщений: 141


« Ответ #66 : 01 октября 2008, 22:40:31 »

Цитировать
прочел про BWMeter- отлично подходит
как его пристыковать чтобы манипулировать трафиками пользователей НС?
ну, это уже отдельная тема, и HC тут как бы не при чём. В BWMeter-е создаются свои пользователи (по ip и mac-адресам) и фильтры для них, которые уже и ограничивают время/трафик/скорость конкретного юзера. 
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #67 : 04 октября 2008, 20:48:22 »

ппробовал luatest супер очень удобно!
добавьте пожалста чтобы оно показывало новые переменные которые есть в последней версии
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #68 : 06 октября 2008, 23:41:49 »

При подходе Проксомитрона не обязательно открывать файл-список отдельно каждым потоком и пытаться каждый раз сохранять его на диск! Можно же один раз загрузить список в память, там его обрабатывать и временами сохранять на диск или выгружать за ненадобностью. В Проксомитроне эта проблема как-то решена.
Мы раньше уже обсуждали, что отдельный файл-список для рассматриваемой задачи бесперспективен. Перспективно общее хранилище метаданных, где в том числе будут отметки о сжатии. Но эта перспектива далека. Здесь же информация о сжатии файла кэша уже лежит "в крамане" НС.
mai62
Сделай, плиз, переменную, где хранилось бы, сжат файл в кэше или нет.

Предлагаю также обсудить, не свести ли все переменные в одну таблицу с именем "hc" и добавить туда методов. Пусть будут переменные hc.answer.body, hc.action, hc.request.body, hc.request.header, hc.answer.header и т.п. Методы могут быть типа hc.answer.GetHeaderField(field_name), hc.request.SetHeaderField(field_name), hc.URLToCache(url) и любые другие. Весь предоставляемый НС API будет, таким образом, собран компактно в одном модуле и получит единообразное оформление.
Сообщить модератору   Записан
anarkidron
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #69 : 27 декабря 2008, 03:13:52 »

Вот хотелось бы на скриптах реализовать подобный алгоритм.
Добавте пожалуста глобальные переменные:
hc_All_from_internet_time - Количество данных, полученных всеми пользователеми из интернета за  последнее n времени (не путать с сутками где меряется с 00 до 24, нужно с момента now по now-n).
hc_user_from_internet_time - Количество данных, полученных пользователем из интернета за  последнее n времени.
n_activ_user - Количество активных пользователей.

Пока что довольсвуюсь приметивным скриптом:
function main()
  if hc_user_from_internet > 100100100 then hc_user_speed_limit = 64000
      else hc_user_speed_limit = 0  end
  if hc_user_from_internet > 400400400 then hc_user_speed_limit = 32000  end
  if hc_user_from_internet > 800800800 then hc_user_speed_limit = 16000  end
end
Сообщить модератору   Записан
zepete
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #70 : 08 января 2009, 00:03:43 »

Надо доработать обработку заголовков, чтобы не только url обрабатывался, а все поля заголовка http.
Это можно сделать тремя путями
1. пишешь $URL(регулярное выражение)|$DATE $CHARSET(....)....&100<#size<500....
2. пишешь типа Browser=регулярное выражение host=регулярное выражение....
2. Добавить несколько колонок с полями заголовка http и поле с лоческой операцией между полями заголовка
Только когда используются первые два пути еще надо добавть toolbar со списком магических слов, что бы незапоминать их.
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #71 : 08 января 2009, 00:10:37 »

в НС все это уже есть и делается с использованием скриптов
можно проводить разбор заголовка по малейшим косточкам
Сообщить модератору   Записан
zepete
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #72 : 08 января 2009, 00:44:30 »

Это делается в темную, из содержимого окон приложения про скрипты ничего не узнаешь.
Это жe windowsное приложение, поэтому все действия должны быть видны из окон.
Иначе лучше тот же самый squid использовать, у него алгоритмы буферезации получше будут, всетаки в американском институте разрабатывали:)
В нем тоже внешние скрипты не вслепую используются.
Хотя тоже могли бы одну могучую строку с сылкой на внешний файл в начале написать и все.
Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #73 : 08 января 2009, 10:58:01 »

Цитировать
лучше тот же самый squid использовать, у него алгоритмы буферезации получше будут, всетаки в американском институте разрабатывалиУлыбка
в качестве экономиисквид проигрывает нс при локальном не сетевом использовании
применение сквидом устаревшего протокола http1.0 заставляет многие серверы слать в ответ несжатые ответы в то время как при сеансе с нс ответы идут в сжатом виде
Цитировать
Это жe windowsное приложение, поэтому все действия должны быть видны из окон.
здесь читал что в следующей версии так и будет 'в следующей версии скрипты станут расширениями с возможностью их настройки через GUI'
хотя с другой стороны здесь об этом нислова
список того что планируется в новой версии мертв уже долгое время но mai62 на вопрос глохнет ли проект ответил не глохнет поэтому что там на самом деле не совсем понятно
« Последнее редактирование: 08 января 2009, 11:31:35 от 4water » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #74 : 08 января 2009, 11:46:58 »

Это делается в темную, из содержимого окон приложения про скрипты ничего не узнаешь.

HC пишет в своем мониторе о срабатывании скриптов! В следующей версии можно будет из скрипта выдать любой текст в Монитор и лог.
Сообщить модератору   Записан
zepete
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #75 : 08 января 2009, 14:24:05 »

Цитировать
лучше тот же самый squid использовать, у него алгоритмы буферезации получше будут, всетаки в американском институте разрабатывали:)
в качестве экономиисквид проигрывает нс при локальном не сетевом использовании
применение сквидом устаревшего протокола http1.0 заставляет многие серверы слать в ответ несжатые ответы в то время как при сеансе с нс ответы идут в сжатом виде
Цитировать
Это жe windowsное приложение, поэтому все действия должны быть видны из окон.
здесь читал что в следующей версии так и будет 'в следующей версии скрипты станут расширениями с возможностью их настройки через GUI'
хотя с другой стороны здесь об этом нислова
список того что планируется в новой версии мертв уже долгое время но mai62 на вопрос глохнет ли проект ответил не глохнет поэтому что там на самом деле не совсем понятно
1. Если речь про экономию зашла, то squid как раз выигрывает.
У него данные в кеше хранятся в виде файлов одинакового размера, в одном файле может быть множество объектов, то есть что-то типа виртуального диска, поэтому на храние маленьких файлов тратится меньше места. Например у тебя на объект размером в 10 байт будет тратиться целый кластер, тоесть минимум 0.5к, а в squid только 10 байт+служебные данные! А протокол http1.1 он уже давно поддерживает, он только в кэше данные хранит в несжатом виде, но hc тоже в несжатом виде хранит. Фрагмент из коментариев в стандартном конфигурационном файле:
#  TAG: http_port
#   Usage:   port [options]
#      hostname:port [options]
#      1.2.3.4:port [options]
#
...........................
...........................
#      http11   Enables HTTP/1.1 support to clients. The HTTP/1.1
2. Я согласен, если скрипты будут просто расширениями регулярных выражений, иначе это будет плохой копией squida. Squid все таки в американских институтах разрабатываля (http://www.squid-cache.org/Intro/):"The Squid project was funded by an NSF grant (NCR-9796082) which covered research into caching technologies. The ircache funding ran out a few years later and the Squid project continued through volunteer donations and the occasional commercial investment.".
По той же схеме что и разработка GUID в windows, и для тех же целей.
Чтобы во всяких windowsах алгоритмы от squid использовать.
Неужели несколько русских кулибиных смогут продумать алгоритм буферизации лучше чем американские профессора работавшие на американскую электронную промышленность:)
Поэтому управление скриптами, это попытка сделать плохую копию squid, в нем тоже в логах можно посмотреть что делается:)
Доработайте лучше регулярные выражения в списках, чтобы они еще несколько команд дополнительных понимали, а скрипты lua (как точно я не помню называется)-это детскость, в 90% случаев в том виде как они реализованы только вредят, так как они повторяют эти же списки, только делают свою работу в темную:)
Например, в скриптах у вас есть функия, которая запрещает кеширование больших файлов, и есть такая же опция в GUI, в результате убираешь галку, а ничего в работе hc не меняется, если пользуется обычный человек, которму лень разбираться в скриптах, он будет долго мучится, почему у него не кешируется, а там оказывается скрипты lue, такая могучая фьюча:)

Добавлено: 08 Января 2009, 14:16:17

HC пишет в своем мониторе о срабатывании скриптов! В следующей версии можно будет из скрипта выдать любой текст в Монитор и лог.

Регулярные выражения тоже скрипты:)
Вот их и надо доработать, а lue это из другой оперы.
Добавить в них несколько команд и все.

Сообщить модератору   Записан
4water
Пользователь
**

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #76 : 08 января 2009, 15:40:45 »

Цитировать
http11   Enables HTTP/1.1 support to clients. The HTTP/1.1
а вот то что обрезано и что на самом деле идет сразу за привиденой цитатой
'The HTTP/1.1 support is still incomplete with an internal HTTP/1.0 hop, but should work with most clients. The main   HTTP/1.1 features missing due to this is forwarding of requests using chunked transfer encoding (results in 411) and forwarding of 1xx responses (silently dropped)'
протокол http1.1 с СЕРВЕРОМ сквид НЕ поддерживает вовсе
с ним не добиться пайплайна сквид может лишь разделить входящий пайплайновый запрос и запрашивать их у сервера параллельно, натыкается при этом на ограничение сервера на число одновременных соединений с одним ip и жуть тормозит, ожидая разрешения сервера.
с ним не получить сжатую страницу например rambler.ru - через сквид из интернета идет 67кб через нс 21 кб. на каждой странице рамблера сквид по сравнению с нс накрутит 20-50кб моего трафика. вот и американские институты

выигрывает сквид в возможности докачки,в сетевых возможностях,возможности недопустить параллельные закачки,использовать заголовок expires... обо всех этих недостатках нс можно узнать только читая этот форум в документации этого не пишут
Сообщить модератору   Записан
zepete
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #77 : 08 января 2009, 16:23:38 »

Точно, сейчас на сайте IBM.COM проверил.
Через squid http://www.ibm.com/favicon.ico 769 байт, а hc 318 байт:)
Только я для этих целей пользуюсь toonelем, поэтому до этой фьючи по Х.
Если бы вы, как минимум, доробатотали работу с проки и расширили работу с регулярными выражениями, то я перешол бы на hc, а так мне пока squid удобней, он ip адреса умеет пережовывать:)
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #78 : 08 января 2009, 21:37:55 »

1. Если речь про экономию зашла, то squid как раз выигрывает.
У него данные в кеше хранятся в виде файлов одинакового размера, в одном файле может быть множество объектов, то есть что-то типа виртуального диска, поэтому на храние маленьких файлов тратится меньше места.

1. Экономия места на диске при сегодняшних размерах винтов и ценах на них - это крайне несущественная проблема. Тем более, что маленькие файлы (примерно до 700 байт) NTFS хранит прямо в MFT и лишнее место на диске не занимает!
2. Кэш HC при желании точно также можно хранить в контейнере на виртуальном диске - в ФАКе описано, как это сделать.
3. Сомневаюсь, что Сквид со своими контейнерами работает быстрее, чем HC c кэшем на NTFS.

Цитировать
Squid все таки в американских институтах разрабатываля

И что это показатель качества? С каких пор?! Все значимые изобретения в Америке были сделаны иностранными эмигрантами, в т.ч. из СССР...

Цитировать
Доработайте лучше регулярные выражения в списках, чтобы они еще несколько команд дополнительных понимали

Вообще-то, HC использует стороннюю библиотеку регулярных выражений PCRE и вносить в нее изменения мы не имеем права - это нарушение авторских прав! А вот в скриптах каждый сам себе автор.

Цитировать
Например, в скриптах у вас есть функия, которая запрещает кеширование больших файлов, и есть такая же опция в GUI, в результате убираешь галку, а ничего в работе hc не меняется

У-гу, я давно предлагаю убрать все дублирующие функции из GUI...  Улыбка

Цитировать
Регулярные выражения тоже скрипты:)
Вот их и надо доработать, а lue это из другой оперы.
Добавить в них несколько команд и все.

Регулярным выражениям по функциональность до скриптов - как до Луны. Устанешь дорабатывать...

а так мне пока squid удобней, он ip адреса умеет пережовывать

HC тоже!
Сообщить модератору   Записан
Страниц: 1 2 3 4 [Все]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: