Wpis z mikrobloga

@WielkiElektronig: a możesz rozwinać ? mam odpalony chromedriver jako serwis i bezpośrednio do niego uderzam ale czasy to nie powalają. Pamiętam, że kiedyś używałem wbudowanej kontrolki Winforms.WebBrowser i tam to zapierdzielało aż miło
@WielkiElektronig: Jeszcze rozwinę. Debuguje to teraz na "oko" i widzę, że niektóre strony zapierzają a na niektórych mam taką zwiechę (mimo, ze cała strona jest jakby już załadowana tylko coś dociąga w tle). Myślę, że to jakieś ustawienie samego sterownika, tylko nie mam pomysłu co :D
@Crisu: a co jak będzie duży ruch? Nie lepiej zapukać na endpoint i wysłać zadanie do rabbitmq i zwrócić id kolejki i potem na 2 endpoincie sprawdzać czy zadanie(screenshot) się wykonało czy nie? Pamiętaj że czasem jakaś strona może się sama z siebie np 30 sec ładować i automatycznie masz już wtedy problem z tineout
@Crisu: po HTTP nigdy nie będzie szybko. Z drugiej strony, dlaczego musi być od razu? Skoro screeny przeglądasz na stronie to te kilka sekund robi Ci różnicę? Cieżko coś doradzić, jeśli nie znam pełnego zapotrzebowania biznesowego :)
@WielkiElektronig: Przypadek biznesowy jest taki, że mam aplikację z listą produktów do każdego dołączony jest url (na stronie może być wyświetlone od 1-200 produktów). User ma przycisk generuj podgląd i w tym momencie w tle odpada mu się generowanie miniatur stron które później wyświetlane są na stronie obok produktu. Także przy 100 elementach jest już zasadnicza różnica czy to leci 2 czy 3s. Słabo z cache'owaniem bo praktycznie url się nie
@WielkiElektronig: teraz kod odpowiedzialny za generowanie jest w końcówce klienta (desktopowa apka)
Używam właśnie WebBrowsera z Winforms i działa to mega szybko ale też stosunkowo dużo nie potrafi pobrać (leci timeout gdzie selenium bez problemu ogarnia) Z tego co czytam to Webbrowser jest juz po prostu stary i nie wspiera nowych standardów a kazdy link jest inny praktycznie, wiec ciężko wyłapać o co może chodzić.
Webbrowser


@Crisu: zawsze był #!$%@?.

Czyli u klienta to jest winformsowa aplikacja, w której chcesz robić jak najwięcej miniaturek stron? Czy testujesz w desktopie, żeby móc poźniej przesyłać gdzie indziej?

HttpWebRequest request = HttpWebRequest.Create("https://[url]") as HttpWebRequest;
Bitmap bitmap;
using (Stream stream = request.GetResponse().GetResponseStream())
{
bitmap = new Bitmap(stream);
}

widzę, że tak można zrobić screen ze strony, ciekawe

https://stackoverflow.com/questions/1981670/programmatically-get-a-screenshot-of-a-page
@Crisu: zawsze był #!$%@?.


@WielkiElektronig: tak xD ale #!$%@? nie wiem chyba cały IE siedzi w pamięci bo #!$%@? bardzo.
To jest aplikacja WPF gdzie właśnie się ten moduł psuje, bo coraz więcej miniatur nie mogą wygenerować.
Mógłbym zrobić oczywiście, że jeśli WebBrowser nie ogarnie to atakuj z Selenium ale szukam standardowego rozwiazania :D
szukam standardowego rozwiazania


@Crisu: dużo URL'i, wiele zależy od serwerów, połączeń. Dużo nie zyskasz. Może jakieś buforowanie? Tzn. serwis webowy, który najczęściej odwiedzane/sprawdzane URL'e będzie trzymał skeszowane?