Jeśli miałbyś przechowywać agenta użytkownika w bazie danych, jak duży byłby dla ciebie nocleg?
Znalazłem ten artykuł w technecie, który zaleca utrzymanie UA poniżej 200. Nie wygląda na to, że jest to zdefiniowane w specyfikacji HTTP, przynajmniej nie to, że znalazłem. Mój UA ma już 149 znaków i wygląda na to, że każda wersja .NET będzie do niego dodawać.
Wiem, że mogę przeanalizować sznurek i go rozbić, ale wolałbym nie.
EDYCJA
Na podstawie tego bloga IE9 zmieni się, aby wysłać krótki ciąg UA. To dobra zmiana.
http
database-design
http-headers
user-agent
JoshBerke
źródło
źródło
Odpowiedzi:
Specyfikacja HTTP wcale nie ogranicza długości nagłówków. Jednak serwery WWW ograniczają rozmiar akceptowanego nagłówka, wyrzucając
413 Entity Too Large
go, jeśli przekracza.W zależności od serwera WWW i ich ustawień limity te wahają się od 4KB do 64 KB (łącznie dla wszystkich nagłówków).
źródło
Moje zdanie na ten temat:
UNIQUE BINARY(32)
(lub 64 lub 128 w zależności od długości skrótu) i haszować UserAgentNiektóre ciągi znaków UA mogą być nieprzyzwoicie długie. To powinno oszczędzić ci zmartwień. Wymuszaj także maksymalną długość w INSERTerze, aby UA sznurował go poniżej 4KB. O ile ktoś nie wysyła Ci e-maila do klienta użytkownika, nie powinien przekraczać tej długości.
źródło
Zauważyliśmy coś takiego w naszych logach Apache. Wydaje mi się to nienormalne, ale regularnie widzę takie rzeczy w logach głównie z systemów Windows.
źródło
642
liczby. Pierwsze cztery numery są zawsze6
,7
,8
, lub9
. Piąta liczba jest zawsze0
. Trzy ostatnie są zawsze603
,703
,803
, lub903
. Być może ktoś może rozpoznać ten wzór? (Potwierdzony okres półtrwania 3?)Ponieważ jest to do celów bazy danych i nie ma praktycznego limitu, wybrałbym tabelę UserAgents z UserAgentId jako Int i UserAgentString jako NVarChar (MAX) i użyłem klucza obcego w oryginalnej tabeli.
źródło
Jak to na duże ?:
źródło
Nie ma określonego limitu, tylko limit większości serwerów HTTP. Pamiętając o tym, zaimplementowałbym kolumnę o rozsądnej stałej długości (użyj Google, aby znaleźć listę znanych klientów użytkownika, znajdź największy i dodaj 50%), i po prostu przytnij dowolnego użytkownika użytkownika, który jest zbyt długi - każdy wyjątkowo długi klient użytkownika jest prawdopodobnie wystarczająco wyjątkowy, nawet jeśli został przycięty lub jest wynikiem jakiegoś błędu lub próby „włamania”.
źródło
Mam dziś tego klienta użytkownika, który przepełnia pole pamięci naszego dostawcy:
Śmieszny! 229 znaków?
Więc weź ten rozmiar, podwoj go, podwoj jeszcze raz i powinieneś być ustawiony do następnego błędu Microsoft (może tym razem w przyszłym roku).
Idź większy niż 1000!
źródło
Dam ci standardową odpowiedź:
Wybierz największą możliwą wartość, jaką możesz sobie wyobrazić, podwoj ją i to jest twoja odpowiedź.
źródło
Załóżmy, że ciąg agenta użytkownika nie ma ograniczenia jego długości i przygotuj się do przechowywania takiej wartości. Jak widzieliście, długość jest nieprzewidywalna.
W Postgres istnieje typ tekstu, który akceptuje ciągi o nieograniczonej długości. Użyć tego.
Najprawdopodobniej w pewnym momencie będziesz musiał zacząć obcinać. Nazwij to dobrze przy rozsądnie przydatnym przyrostie (200, 1k, 4k) i wyrzuć resztę.
źródło
Oto 257
źródło
Nie oznacza to, jak duży może być klient użytkownika, ponieważ istnieje wiele odpowiedzi pokazujących przypadki, w których się natknęli, ale najdłuższy, jaki można znaleźć na stronie http://www.useragentstring.com/pages/useragentstring.php? name = Wszystkie miały 250 bajtów.
źródło