Oceniając wydajność ram PHP natknąłem się na dziwny problemWydajność text/html vs. application/json
Wysyłanie JSON jako application/json
wydaje się znacznie wolniej niż wysyłanie bez dodatkowego nagłówka (który wydaje się awaryjne text/html
)
Przykład # 1 (zgłoszenie/json)
header('Content-Type: application/json');
echo json_encode($data);
Przykład 2 (text/html)
echo json_encode($data);
Testy z apachebench (ab -c10 -n1000
) daje mi:
Przykład 1: 350 #/s
Przykład 2: 440 #/s
co wskazuje, że ustalenie dodatkowego nagłówka wydaje być nieco wolniejszym.
Ale:
Pierwsze takie same JSONs poprzez "Ajax" (jQuery.getJSON('url', function(j){console.log(j)});
) sprawia, że różnica bardzo duża (timing jak widać w Chrome Web Inspector):
Przykład # 1: 340 ms/request
Przykład nr 2: 980 ms/prośba
Co się stało z tą różnicą?
Czy istnieje jakiś powód, aby używać aplikacji/json pomimo różnicy wydajności?
Czy to ma znaczenie, jeśli uruchomisz 'ob_start();' przed ustawieniem nagłówka? – mkaatman
trochę, ale różnica jest taka sama – stwagner
Bez spojrzenia na kod źródłowy, nie sądzę, że jQuery.getJSON dba o typ zawartości, prawda? – stwagner