parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Кэширование текста, полученного с удаленного хоста

coel 01.10.2014 12:38

Например, если я хочу получать JSON массив с праздниками производственного календаря и при этом делать запрос к удаленному хосту всего 1 раз, то делаю так:
@_factory[y;m;d]
^cache[/cache/factory-cal.cache](300){
	$j[^file::load[text;http://basicdata.ru/api/json/calend/;$.timeout(3)]]
}
$h[^json:parse[^untaint[as-is]{$j.text};
	$.double(false)
	$.distinct[all]
]]

$y(^y.int(0))
$m(^m.int(0))
$d(^d.int(0))

$sColor[^switch[$h.data.$y.$m.$d.isWorking]{
	^case[2]{holiday}
	^case[3]{short}
	^case[DEFAULT]{}
}]

$result[$sColor]
При первом формировании страницы в моем календаре правильно окрашиваются дни.
А если обновить страницу, то Парсер выдает ошибку: unexpected end of json data в месте, где происходит ^json:parse[].
Видимо когда кэш уже создан переменная $j почему-то перестает существовать.
Как правильно сделать кэш?