+  HandyCache форум
|-+  Главная категория» Общие вопросы» Re: Скрипты Lua в HandyCache
Имя пользователя:
Пароль:
Страниц: 1 [2] 3 4 ... 11   Вниз
  Отправить эту тему    Печать  
Автор Тема: Re: Скрипты Lua в HandyCache  (Прочитано 47867 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Vat
Новичок
*

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

Сообщений: 5


« Ответ #20 : 14 февраля 2008, 09:31:44 »

Хотелось бы, чтобы HC в скрипт передавал не только разамер файла в кеше, но и дату-время, когда этот файл был записан в кеше.
Таким образом скрипт dont_update_image_by_type.lua можно было бы доработать, и создать скрипт, кторый бы работал как правило "Не обновлять" с установленным критерием свежести.
Сейчас мы получаем размер файла на сервере, сравниваем с нашим размером... То есть делаем запрос на сервер, полюбому.
Если бы из HC мы сразу получили дату сохранения, то сравнили бы с текущей датой системы, и если файл все еще считается "свежим", то не делаем запрос на сервер вообще, а сразу подсовываем файл из кеша.
Сообщить модератору   Записан
Vat
Новичок
*

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

Сообщений: 5


« Ответ #21 : 14 февраля 2008, 13:23:29 »

Чтобы не множить темы, продолжу тут.

1. Я так понимаю, что сперва срабатывают скрипты Lua, а потом уже "Преобразование URL" и всяческие Списки? Или каков порядок? Где находится исполнение скриптов Lua в иерархии выполнения?

2. Если скрипт установил action = 'save', но при этом этот урл попадает под правило - черный список, то файл сохранится в кеш или нет? Или, action указал = dont_save, но при этом благодаря правилу .* из списка "Не обновлять" оно попытается его закешировать (так как, допустим, этого файла нет в кеше). В этом случае будет кеширование или нет?
Или, другими словами, расширенный вопрос: если скрипт установил какой-либо action, то всегда выполнится этот action, или Списки могут его изменить?
Или при установленном action Списки вообще не срабатывают?

3. Опять про dont_update_image_by_type.lua. Пример: есть правило в "Не обновлять" с критерием свежести для всех картинок. Есть сайт, который аватары и картинки выдает без разрешения jpg, а просто вида megascript.php?getimage=234234&userid=fwe3333 (как пример), то есть - без разрешения.
И вот, чтобы в скрипте dont_update_image_by_type.lua не писать свой критерий свежести для картинок, хотелось бы как-то сделать так, чтобы после отработки скриптом потом обрабатывался url через списки.

Как пример, можно было бы создать в скрипте переменную url_from_lue, где будет создаваться урл по какому-то правилу, например, описанный выше случай формировать в виде megascript.php?getimage=234234&userid=fwe3333.jpg.
HC видит, что переменная url_from_lue не пустая, и ЕЕ парсит через списки (но контент берет из оригинального url). Если же переменная в скрипте не была установлена, то HC работает как и прежде.
Таким образом можно, например, написать скрипт, который легко отслеживает картинки через заголовки, дописывает нужное разрешение, а HC, исходя из правил в списках, дальше все отработает.
На самом деле тут открываются намного большие возможности, чем просто работа с картинками, которые без разрешения :-)
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #22 : 14 февраля 2008, 17:19:28 »

Сейчас мы получаем размер файла на сервере, сравниваем с нашим размером... То есть делаем запрос на сервер, полюбому.
Если бы из HC мы сразу получили дату сохранения, то сравнили бы с текущей датой системы, и если файл все еще считается "свежим", то не делаем запрос на сервер вообще, а сразу подсовываем файл из кеша.

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

А то, что ты предлагаешь - давно умеет список "Не обновлять"! Полностью дублировать его функции скриптами не вижу смысла!

1. Я так понимаю, что сперва срабатывают скрипты Lua, а потом уже "Преобразование URL" и всяческие Списки? Или каков порядок? Где находится исполнение скриптов Lua в иерархии выполнения?

Скрипты проверяются на этапе загрузки из интернета, т.е. после проверки списков.

Цитировать
2. Если скрипт установил action = 'save', но при этом этот урл попадает под правило - черный список, то файл сохранится в кеш или нет?

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

Цитировать
Или, action указал = dont_save, но при этом благодаря правилу .* из списка "Не обновлять" оно попытается его закешировать (так как, допустим, этого файла нет в кеше). В этом случае будет кеширование или нет?

Список "Не обновлять" не занимается записью в кэш и он сработает раньше скриптов!
Если сработал список "Запись в кэш", а скрипт сказал "dont_save", то HC в кэш писать не будет - в данном случае приоритет у скрипта.

Цитировать
Или, другими словами, расширенный вопрос: если скрипт установил какой-либо action, то всегда выполнится этот action, или Списки могут его изменить?
Или при установленном action Списки вообще не срабатывают?

См. выше...

Цитировать
И вот, чтобы в скрипте dont_update_image_by_type.lua не писать свой критерий свежести для картинок

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

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

Гонять URL второй раз по спискам - это лишняя трата времени и ресурсов!
« Последнее редактирование: 14 февраля 2008, 17:23:44 от DenZzz » Сообщить модератору   Записан
Vat
Новичок
*

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

Сообщений: 5


« Ответ #23 : 14 февраля 2008, 17:38:32 »

Цитировать
Не вижу сложности в том, чтобы указать критерий свежести в самом скрипте, если это потребуется.
Как узнать дату файла, сохраненного в кеше? Если не видим сложности.


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

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

Сообщений: 5589



« Ответ #24 : 14 февраля 2008, 20:00:48 »

Если не понятно, не надо утверждать "то, что ты предлагаешь", ибо, судя по всему, ты не понял то, что я написал.

Похоже, ты и сам не понял, что написал! Та моя реплика относилась к этому твоему высказыванию: "то не делаем запрос на сервер вообще".
Я же тебе объяснял, что скрипты без запроса к серверу работать не могут, но зато это может список "Не обновлять"!

Цитировать
Какое хитроумное правило нужно сделать, что сказать: _всем_картинкам_, даже тем, которые без расширения джипег, гиф и иже с ними, _на_любом_ сайте, обновляться с критерием свежести 100 часов?

Без запроса к серверу, это нельзя сделать ничем, т.к. неизвестно, что за файл без расширения лежит в кэше!

Цитировать
Как узнать дату файла, сохраненного в кеше?

Вопрос не в том, как узнать, а в том, как сообщить ее скрипту! Пока этого сделать нельзя. Если идея приживется, то потребуется ввести новую переменную hc_cache_file_date...
Сообщить модератору   Записан
Дем
Постоялец
***

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

Сообщений: 167



« Ответ #25 : 26 февраля 2008, 12:14:58 »

ммм... штука хорошая, а развитие планируется? Хотелось бы иметь возможность и над запросом поиздеваться Улыбка
Т.е. обработать то, что браузер послал, может быть даже до прогона по спискам - ведь скрипты инструмент более мощный.
Заодно там же можно обработать и путь к файлу в кеше, в который писать/читать будем.
Кстати, чтобы не дублировать - можно можно предусмотреть возможность отключения прогона по спискам - типа "мы уже всё сделали - дальнейшей обработки не надо"

Т.е. например - пишем в "серверы-посредники" строчку script://lua/query - lua_q.txt  и т.д. аналогично существующей
В скрипт передаём глобальные (модифицируемые) переменные  - текстовые hc_query с полученным от сервера запросом и hc_filename с путём к файлу в кеше. В hc_action возвращаем действие (load/stop/cache), в hc_list_ignore логический флаг "не применять скрипты" и в hc_header - заголовок ответа для случая, если не грузим с инета

Общий порядок выполнения тогда будет следующий:
lua/query - списки-загрузка-списки - lua/answer
Добавлено: 26-02-2008, 12:02:26

Ещё - есть такая штука, как LuaSQL

LuaSQL is a simple interface from Lua to a DBMS. It enables a Lua program to:

    * Connect to ODBC, ADO, Oracle, MySQL, SQLite and PostgreSQL databases;
    * Execute arbitrary SQL statements;
    * Retrieve results in a row-by-row cursor fashion.

LuaSQL is free software and uses the same license as Lua 5.1.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #26 : 26 февраля 2008, 12:46:30 »

Цитировать
развитие планируется?
Планируется, и приблизительно так как ты пишешь. lua/answer было написано из расчета на возможное появление lua/request, lua/body, а может чего-то еще.
Цитировать
Ещё - есть такая штука, как LuaSQL
Есть. А еще мне запомнились сокеты для lua и возможность формирования/показа из lua окошек с контролами.
Сообщить модератору   Записан
Enver
Новичок
*

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

Сообщений: 46


« Ответ #27 : 03 марта 2008, 10:46:33 »

Возможно ли заставить HandyCache с помощью lua выдавать размер загрузки (архива, проги, файла мультимедиа...) в специальной странице вместо того чтобы загружать файл

Например - кликаю на setup.com/setup.exe, HandyCache получает ХТТП-ответ, не загружая сам файл и выдаёт вместо файла страничку с его размером

Хотелось бы чтобы было легко редактировать список расширений на которые HandyCache так реагирует, а так же сделать так чтобы можно было кроме расширения смотреть Content-type

После получения инфы о размере файла можно будет при желании его загрузить через качалку

Всем заранее спасибо!

PS. Если это невозможно, прошу показать хотябы примерный скрипт для блокировки файлов по Content-type
« Последнее редактирование: 03 марта 2008, 11:01:02 от Enver » Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #28 : 03 марта 2008, 11:38:07 »

После получения инфы о размере файла можно будет при желании его загрузить через качалку

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

Цитировать
Хотелось бы чтобы было легко редактировать список расширений на которые HandyCache так реагирует, а так же сделать так чтобы можно было кроме расширения смотреть Content-type

Все это можно сделать скриптом.

Цитировать
прошу показать хотябы примерный скрипт для блокировки файлов по Content-type

См. на первой странице.
Сообщить модератору   Записан
Enver
Новичок
*

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

Сообщений: 46


« Ответ #29 : 03 марта 2008, 19:07:09 »

постил вопросы раза три и потом удалял, сам находя ответы Улыбка остался такая вот просьба к вам:
напишите пожалуйста простейший скрипт луа для блокировки всего подряд. сам могу чё-нить помудрить, но хочется грамотного решения
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #30 : 03 марта 2008, 19:39:54 »

напишите пожалуйста простейший скрипт луа для блокировки всего подряд.

Держи:

Код:
function main()
  hc_action = "stop"
end

P.S. А "Черный список" тебя не устроил тем, что размер заблокированных файлов не пишет? Зато нет лишних запросов к серверу, что экономит трафик!
Сообщить модератору   Записан
Enver
Новичок
*

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

Сообщений: 46


« Ответ #31 : 03 марта 2008, 20:34:51 »

Большое спасибо

Дык я ведь только exe/zip/rar......и т.д. буду блокировать с помощью скриптов. А остальное всё по стандартному чёрному списку. Просто я заметил что почти всегда после блокировки такого файла, запускал утилиту GetFileSize, чтобы узнать размер, что не очень удобно, даже очень неудобно. Теперь же благодаря такой великолепной фиче я просто буду смотреть в монитор HandyCache. Трафик при таком раскладе будет небольшой, тем более что он итак бы мной тратился через GetFileSize... Ещё раз спасибо
Сообщить модератору   Записан
sergo
Постоялец
***

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

Сообщений: 112


« Ответ #32 : 04 марта 2008, 01:39:40 »

мало делать обработку отдельными скриптами запросов и ответов. хороша возможность связи между обработкой запроса и обработкой ответа: "если в запросе было тото то в ответе делать такто". и чтоб срабатывание этой связаной пары могло привязываться к одному регэкспу url, пользователя
« Последнее редактирование: 04 марта 2008, 01:47:38 от sergo » Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #33 : 04 марта 2008, 11:46:14 »

"если в запросе было тото то в ответе делать такто"

Приведи реальный пример, для чего это можно использовать на практике.

P.S. В первую очередь планируется реализовать в скриптах возможность правки заголовков запросов и формирование ответов самим HC без обращения к серверу.
Сообщить модератору   Записан
Fernand
Пользователь
**

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

Сообщений: 65


« Ответ #34 : 25 марта 2008, 17:26:43 »

Есть такой момент в работе (см.скрин).

Если отключить Lua, то в этом месте (вместо Access denied) появляется надпись
Код:
Not Found
The requested URL /towns/31561.htm&ac=49266 was not found on this server.
--------------------------------------------------------------------------------
Apache/1.3.34 Server at www.gismeteo.ru Port 80
Вопрос стоит так - как можно избавится от подобного текста? Сразу оговорюсь - на "Черном списке" висит прозрачный gif 1*1 и на правилах отрабатывает правильно..
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #35 : 30 марта 2008, 19:14:41 »

Если отключить Lua, то в этом месте (вместо Access denied) появляется надпись
...
Сразу оговорюсь - на "Черном списке" висит прозрачный gif 1*1 и на правилах отрабатывает правильно..

"Черный список" сейчас работает раньше скриптов, поэтому Lua не могут мешать срабатывать Черному списку!
А "Access denied" и "Not Found" выдает сам сервер Гисметео!
Сообщить модератору   Записан
IVAn Dealer
Пользователь
**

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

Сообщений: 55


« Ответ #36 : 08 июня 2008, 19:24:30 »

огромное спасибо DenZzz'у за скрипты!!!
всё отлично работает и трафик экономится со страшной силой Улыбка

p.s. что-нибудь новенького появилось?
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #37 : 08 июня 2008, 21:41:24 »

p.s. что-нибудь новенького появилось?

А чего бы хотелось? Предлагайте! Если это возможно будет сделать, то напишу скрипт.

Когда в HC появится обработка скриптами исходящих заголовков запросов, выложу скрипт "Блокировка внешних ссылок", т.е. на страницах будет блокироваться загрузка объектов с других сайтов. Обычно так грузятся всякие рекламные баннеры, счетчики и т.п. ...
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #38 : 19 июня 2008, 13:32:29 »

Ну к примеру ограничить размер файла 10-ю мегабайтами при условии что сейчас время с 20:00 до 24:00, а в остальное время не ограничивать.

См. вложение...

* block_long_file_by_time.zip (0.7 Кб - загружено 141 раз.)
Сообщить модератору   Записан
The Alex
Новичок
*

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

Сообщений: 28


« Ответ #39 : 19 июня 2008, 14:17:06 »

Как правильно изменить в скрипте block_long_file_by_time временные параметры в строке if time.hour, чтобы была разрешна блокировка файлов по размеру (например 300 кбайт) с 6.00 до 23.59, а с 00.00 до 5.59 снимались ограничения? Или, если можно, готовый скрипт? Смущен
Сообщить модератору   Записан
Страниц: 1 [2] 3 4 ... 11   Вверх
  Отправить эту тему    Печать  

 
Перейти в: