Witam
nie wiem czy ktoś już odkrył ten sposób ale jeśli nie to bardzo może się przydać.
Zacząłem zabawe z serwerem HTTP na Atmedze. Strasznie irytowało mnie (Panie Mirku przepraszam za okreslenie) nieeleganckie podejście do ciagłego ładowania się strony przy czasie utrzymywania sesji TCP na np 30 sekund.
Ograniczenie tego czasu może skutkować prz mało wydajnych połączeniach (np GSM) tym że moduł zerwie sesję nim wyśle sie strona(zakładamy że strona jest duża).
Z kolei długi czas irytuje przy szybkich połączeniach.
Wydaje mi się ze udało mi się rozwiązać ten problem bardziej elegancko.
Otóż wystarczy(moim zdaniem) zastosować podanie w odpowiedzi 200OK następującej frazy:
Kod:
Content-Length: 109\r\n
czyli całość powinna wyglądać następująco:
Kod:
void http_200ok(void){
uart_puts_P(PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nContent-Length: 109\r\nPragma: no-cache\r\n\r\n"));
}
Jak to działa??
w parametrze Content-lenght musimy podać ilość znaków która wyślemy.Ale uwaga!!!!!!!!!!!!
To jest screen z moich testów i tam ten parametr (190)jest ustawiony na sztywno a trzeba to zautomatyzować.
Jeżeli podamy za mało to dotrze tylko tyle znaków ile jest podane czyli strona może się cała nie załadować.
Jeżeli podamy za dużo to tak jakbyśmy nic nie zrobili bo przeglądarka będzie czekała na dane tak długo aż moduł zerwie sesję.
Według moich testów to rozwiązanie działa i na Firefoxie znacznie przyspiesza ładowanie stron a Chrome nie kreci już w nieskończoność.
Proszę potestujcie to w miarę własnych możliwości bo to może rozwiązać sporo problemów z relacją ilości danych vs czas trwania sesji vs szybkość internetu.