Мы делаем это автоматически в платформе NetQuarry - это довольно просто, хотя вы заставляете изображение проходить через ваш сайт по сравнению с charts.google.com, заставляя браузер выполнять запрос через одно соединение.
Поскольку диаграмма - это просто ссылка на изображение, мы создаем ссылку на диаграмму (очевидно, гораздо более сложный процесс), а затем добавляем всю ссылку на строку запроса во внутренний обработчик (обработчик) .ashx? req = chart &). Итак, новая ссылка выглядит так:
handler.ashx акт = CHRT & REQ = график и CHT = p3 & CHS = 450x170 & CHD = s: HAR9GBA & хл = Новое | В% 20Progress | Ответили | Не будет ли% 20Respond | На% 20Hold | Будущее | Обзор | & Chg = 20,20,1 , 5 & Chg = 10,25,1,5 & CHCO = 0A477D
Затем мы просто загружаем данные изображения и записываем их обратно как ответ.
Вот код:
Blockquote
private void GoogleChart(HttpContext cxt)
{
const string csPrefix = "?act=chrt&req=chart&";
HttpRequest req = cxt.Request;
HttpResponse rsp = cxt.Response;
string sUrl = cxt.Request.RawUrl;
int nStart = sUrl.IndexOf(csPrefix, StringComparison.OrdinalIgnoreCase);
rsp.Clear();
if (nStart > 0)
{
sUrl = "http://chart.apis.google.com/chart?" + sUrl.Substring(nStart + csPrefix.Length);
System.Net.WebClient wc = new System.Net.WebClient();
byte[] buffer = wc.DownloadData(sUrl);
cxt.Response.ClearContent();
cxt.Response.ClearHeaders();
cxt.Response.ContentType = "application/octet-stream";
cxt.Response.AppendHeader("content-length", buffer.Length.ToString());
cxt.Response.BinaryWrite(buffer);
}
}