![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 21.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, próbuję napisać skrypt, który sprawdzi ile KB ma dany kod html. Mowa tutaj o samych znakach. Jak sensownie przeliczyć kb na znaki - by np. ustrzec się przed limitami dla przykładu allegro (65kB - limit opisu aukcji)? Aktualnie kombinuję coś w tym kierunku:
Jednak nie wiem na ile to miarodajne, no i czy nie ma lepszej metody? Pozdrawiam. Ten post edytował szuki 9.12.2012, 22:32:33 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Gdyby zapomnieć na chwilę że pytasz konkretnie o allegro, to odpowiedź powinna brzmieć mniej więcej tak:
Na rozmiar transmisji wpływa kilka kwestii: - Kodowanie, w UTF-8 każdy "znak" może mieć 8, 16, 32, 64 bajty. W skrajnych przypadkach (przy braku normalizacji) każdy znak ma 64 bajty nawet gdy pochodzi z tablicy ASCII ![]() - Kodowanie i kompresja http (gzip, chunked-transfer-encoding). Jedno zmniejsza a drugie zwiększa rozmiar transmisji. Pytasz konkretnie o allegro, więc musiałbyś zacząć od ustalenia co allegro rozumie przez 65kb, bo rozumieć może kilka rzeczy, ale najpewniej jest to rozmiar w bajtach (ignorujący kodowanie). Jeśli tak to powinieneś zdecydować się na kodowanie ISO-8859-1, w którym każdy znak masz upchany w 8 bitach, a co za tym idzie możesz stworzyć większy opis ![]() Oczywiście o ile allegro po drodze nie przekoduje opisu na swój system kodowania i dopiero wtedy policzy rozmiar.. Musisz to sprawdzić. Ten post edytował wNogachSpisz 9.12.2012, 23:24:58 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 21.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Allegro było tylko przykładem, no i swoją drogą nie podaje zbyt wielu informacj. Jednak sporo się dowiedziałem, dzięki.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@wNogachSpisz: mylisz bity i bajty, jak i również wprowadzasz w błąd pisząc o normalizacji (znak ASCII w UTF-8 nie może mieć 64-bitów).
@szuki: O ile tylko strlen nie zostało nadpisane przez mb_strlen (Google: PHP multibyte functions override) jest to najlepszy sposób na sprawdzenie wielkości tekstu (wyrażonej w bajtach). Mimo swojej nazwy, strlen zlicza ilość bajtów, nie znaków (a te, jak zauważył @wNogachSpisz mogą mieć więcej niż jeden bajt). |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 21.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Czyli w takim razie najlepiej będzie skompresować kod, a dopiero później go przeliczyć. A czy białe znaki, nowa linia, itd. również wpływają na ilość bajtów?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Kompresja żądań HTTP nie ma tu absolutnie nic do rzeczy.
2. Białe znaki to takie same znaki jak i inne, a więc zajmują one miejsce. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 21.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie rozumiem, że warto usunąć wszystkie zbędne spacje, znaki nowej linii - co samo w sobie będzie już optymalizacją wagi. Co jeszcze mogę zrobić?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Pomyłka, chodziło oczywiście o 8,16,32,64 bity, nie bajty.
Nie może ascii siedzieć w 64 bitach? Kiedyś kombinowałem i chyba dało rade.. moge się mylić. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie może. Chyba że skorzystałeś z UTF-32, ale tutaj mowa o ASCII/UTF-8.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:53 |