Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Dlaczego ładowanie się stron trwa 6-10 sekund i czy to wina SPIFSS?

jaskol 17 Nov 2021 18:01 258 4
  • #1
    jaskol
    Level 12  
    Cześć.
    Używałem ESP8266 (4MB) z webserwerem i serwerem FTP. System plikow na SPIFFS.
    Wszystko działało nawet ok, ale podłączyłem sobie ESP32 (4MB) i tak mnie zachwyciła łatwość obsługi bluetooth,
    ze zmodyfikowałem kod i przeniosłem na ESP32.
    No i bardzo się zawiodłem, bo strony ładuja sie po 6-10 sekund, a wcześniej trwało to max. 3 sekundy.
    Nie przechodzę na LittleFS, bo ftpserver wtedy nie działa. Łączy się i ..zamiera. Znalazłem jakiś watek o tym, zrobiłem zmiany, ale nic to nie dało.
    Także zostałem przy SPIFSS i niby wszystko działa, ale koszmarnie wolno.



    Kombinuję teraz z deklarowaniem strony WWW w PROGMEM, ale tracę wtedy możliwosc edytowania "w locie" plików "na dysku" i podglądania zmian w przeglądarce.
    Zakładam, że albo system plików jest taki wolny (może mam moduł z taka kiepską kością pamięci - chociaż próbowałem na 2 różnych i wszędzie tak samo), albo samo wifi tak kiepsko działa.
    To drugie mi się w głowie nie mieści, ale w to, że biblioteki dla SPIFFS maja jakieś błędy, to w to już uwierzę.
    Może miał ktoś podobny problem ?

    Z gory dziekuje za pomoc,
    Mariusz
  • #2
    khoam
    Level 41  
    jaskol wrote:
    Także zostałem przy SPIFSS i niby wszystko działa, ale koszmarnie wolno.

    Tak, SPIFFS jest ponad 5 razy wolniejszy niż FFAT czy LittleFS na ESP32. Espressif jakiś czas temu ogłosił, że w kolejnych wersjach ESP-IDF wycofany zostanie SPIFFS.

    jaskol wrote:
    ale w to, że biblioteki dla SPIFFS maja jakieś błędy, to w to już uwierzę

    Biblioteka arduinowa dla SPIFFS to jeden wielki akt rozpaczy ;) Nie jest już tak naprawdę aktualizowana od kilku miesięcy.

    jaskol wrote:
    Nie przechodzę na LittleFS, bo ftpserver wtedy nie działa

    Znasz ten projekt? Link
  • #3
    jaskol
    Level 12  
    khoam wrote:
    Znasz ten projekt? Link

    Wydaje mi się, że próbowałem już i tego "ftp-a", ale skoro podpowiadasz, to pewnie ten działa.
    Sprawdzę, to by pewnie rozwiązało wiele kłopotów ;)

    Co do prędkości, to chyba mam przyczynę !
    W ESP8266 kopiowałem plik, robiłem zmiany w locie i zapisywałem.
    Czasami zapisywał mi się pusty plik.
    Teraz robię tak, że wczytuję plik-zrodlo do pamięci, tam robię modyfikacje w treści i zapisuje pod nazwą docelową.
    Działa ok, ale też mi się zdarzyło, że czasami plik miał po zapisie 0kb.
    Wstawiłem timeout, na bogato, 3000ms, bo działało poprawnie i pewnie po 500ms było po wszystkim. Wstawiłem i zapomniałem.
    Po przesiadce na ESP32 ten właśnie timeout mnie pogrążył !
    Jak go zmniejszyłem do 100ms, to działa znacznie szybciej, ale już się boje czym to grozi. No i nadal szału nie ma, chwile się strona ładuje..
    Jeśli LittleFS jest 5 x szybszy, to gra jest warta świeczki. Oby tylko FTP z nim działało i nie mam więcej życzeń.
    Biorę się do pracy, dzięki za sugestie ;)

    Mariusz

    P.S.
    Teraz doczytałem, że ten serwer FTP działa właśnie z SPIFFS, czyli to już było.
    No i działa, od razu ujawnił mi się limit kiedy zacząłem przesyłać plik o wielkości ponad 65k.
    Podmieniłem na LittleFS i mam, to o czym pisałem - nie da się niczego przesłać.

    Filezilla zgłasza:
    Response: 150 Accepted data connection to port 50009
    Response: 552 Probably insufficient storage space
    Error: File transfer failed
    Status: Connection closed by server

    Także nadal nędza.
    A co mnie już całkiem dobiło, to dodałem obsługę BLE i mam przekroczoną pamięć programu - 106%
    Szukam wersji z flash-em nie 4MB, ale 16MB.
    Także dreptam w miejscu.

    FTP działa tylko z SPIFFS i ma ograniczenie wielkości plików.
    Do tego działa wolni.
    Nie znalazłem serwera FTP, który działa z LittleFS.
    ESP32 w wersji 4MB po włączeniu BLE ma zajętość pamięci na poziomie 69%, czyli nie ma sensu go kupować bez pamięci 16MB.
    Słabo to wygląda :(

    M.
  • #4
    khoam
    Level 41  
    jaskol wrote:
    Podmieniłem na LittleFS i mam, to o czym pisałem - nie da się niczego przesłać.

    A jak utworzyłeś partycję dla LittleFS i zainicjowałeś system plików?

    jaskol wrote:
    A co mnie już całkiem dobiło, to dodałem obsługę BLE i mam przekroczoną pamięć programu - 106%

    Arduinowa biblioteka BLE jest dość rozbudowana i praktycznie każdy napotyka ten problem przy łączeniu WiFi z BLE.

    jaskol wrote:
    Szukam wersji z flash-em nie 4MB, ale 16MB.

    Poszukaj w soyter.pl. Ale może wystarczy zmienić schemat partycji i powiększyć miejsce dla kodu. Wyjaśniłem to w tym wątku: Link
    Ewentualnie można utworzyć własny schemat partycji: Link
  • #5
    jaskol
    Level 12  
    khoam wrote:
    A jak utworzyłeś partycję dla LittleFS i zainicjowałeś system plików?

    Skorzystałem z opisu na WWW, tutaj na przykład:
    https://www.mischianti.org/2020/02/08/ftp-server-on-esp8266-and-esp32/
    Skopiowalem mklittfefs,exe do katalogu z esptool.exe i i innymi *.py.

    Wyglad to dziwnie. Mam menu zeby zrobic upload plikow, juz sie pogodzilem, ze FTP nie bedzie dzialac.
    Jak odpale programik testowy, to zapisuje i odczytuje partycje, ale jak odpale mój program docelowy, zrobię upload, to cisza.
    "Nie ma takiego pliku" i tyle. Nie widzę tylko żadnego pliku z definicją partycji, wybieram różne płytki w Arduino, ostatnio Wemos, bo tak mam na niej napisane. Ale jak inną wybiorę, to mam inne definicje, a w katalogu /...i tutaj dluga sciezka/partitions mam pliki i zadnej nie ma w nazwie niczego zaczynającego sie od littlefs.
    Ale jak wrzucam przez menu w Arduino, to pieknie pokazuje pliki z katalogu data, pisze, że wysyła, żadnych błędów.
    Cały dzień się z tym męczę, tragicznie to jest zrobione. Pewnie, darowanemu koniowi się nie zagląda, ale to mnie nigdy nie przestanie dziwić - że ludzie robią coś tak zagmatwanego, tak niby w jednym miejscu opisanego, a tak nie działającego. Przykłady można mnożyć.

    jaskol wrote:
    Szukam wersji z flash-em nie 4MB, ale 16MB.

    khoam wrote:
    Poszukaj w soyter.pl. Ale może wystarczy zmienić schemat partycji i powiększyć miejsce dla kodu.
    khoam wrote:

    Już kupiłem, ale bez lutowania się nie obejdzie. Nie znalazłem żadnej wersji ze scalakiem do zasilania czy z konwerterem RS232 <> USB już na płytce PCB.
    Ktoś wymieniał samego flash-a, tez o tym myślałem, ale się okazuje, że to się wiąże z grzebaniem w bootloaderze czy jeszcze innych plikach i w sumie, to później działa, albo nie. Zobaczę, czy ta moja wersja się dobrze zidentyfikuje, ale coś widzę, ze do mrugania diodą po Wifi, to się to wszystko nadaje, ale jak chcesz zrobić coś więcej, to zaczynają się problemy :(


    khoam wrote:
    Wyjaśniłem to w tym wątku:
    Link
    Ewentualnie można utworzyć własny schemat partycji: Link


    Właśnie się zaczynałem zastanawiać jak to działa ;)
    Dzięki, na pewno popróbuję, ale chyba wrócę do ESP8266, bo tam przynajmniej wszystko działało, a coś mi mówi, że przy tym ESP32 tracę
    czas na jakieś błędy, bo skoro mam info, że pliki się wysłały, ale ich tam nie ma, to coś jest nie tak.
    Nauczę się na 8266 i mądrzejszy wrócę do tematu na 32.

    M.