2009-11-30 6 views
11

Czy większość (IE, FF, Safari, Chrome, Opera) tworzy wiele żądań HTTP dla pliku PDF podczas wyświetlania pliku PDF w przeglądarce? Pracuję nad zagadnieniem integrującym się z oprogramowaniem WebTrends Web Analytics, a statystyki wokół plików PDF wydają się nieprawidłowe. Wsparcie powiedziało mi, że ponieważ WebTrends analizuje dzienniki dostępu do serwerów sieci Web w celu określenia ruchu, pobrań itp. Ma trudności z określeniem dokładnych pobrań plików PDF, ponieważ:
Gdy użytkownik kliknie plik PDF, a plik PDF zostanie otwarty w przeglądarce użytkownika za pośrednictwem Wtyczka do przeglądarki Acrobat Reader, każda strona jest pobierana jeden po drugim - robi to, aby zaoszczędzić przepustowość, jeśli użytkownik przegląda tylko pierwsze 2 strony 50-stronicowego pliku PDF, pobierane są tylko pierwsze 2 strony.Czy większość przeglądarek tworzy wiele żądań HTTP podczas wyświetlania pliku PDF z poziomu przeglądarki

To brzmi dla mnie podejrzanie (w jaki sposób można wysłać żądanie HTTP, aby udostępnić tylko część pliku binarnego?) - Przeszukałem Google, ale nie znalazłem niczego, co by do tego przemówiło.

Postaram się znaleźć oprogramowanie IE, które pozwoli mi wyczuć ruch HTTP jutro, aby zobaczyć, czy mogę zaobserwować to zjawisko.

Wszelkie informacje/przemyślenia są jednak doceniane.

+1

Brak odpowiedzi jako takiej, ale funkcja http obsługuje pobieranie części plików za pośrednictwem nagłówka zakresu treści. Być może PDF go używa ... * wzrusza ramionami * – Will

+2

Znalazłem Fiddlera bardzo przydatnego do takiego wąchania pakietów IP. –

+0

Patrz [RFC 2616, sekcja 3.12] (http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.3.12). –

Odpowiedz

13

Jeśli witryna zwraca nagłówka odpowiedzi HTTP takiego:

Accept-Ranges: bytes 

czytnik PDF zamknie intitial połączenie po przeczytaniu zaledwie kilku KB dokumentu. Następnie prosi sekcje dokumentu zgodnie z wymogami z nagłówka żądania Range np .:

Range: bytes=242107-244329, 8060-76128 

Przykładem adresu URL, który robi to http://www.ovationguitars.com/img/OVmanual.pdf.

Jeśli nie wrócić Accept-Zakresy header wówczas dokument PDF zostanie pobrany w jednym wniosku (np http://manuals.info.apple.com/en/iphone_user_guide.pdf)

widać zachowanie czytnika PDF w IE przy użyciu HttpWatch.

** Zastrzeżenie: Ta odpowiedź została wysłana przez Simtec Limited, twórcy HttpWatch **

+0

Bardzo interesujące podziękowanie! Wygląda na to, że jest to możliwe, jednak po dalszych badaniach (oglądaniu HTTPRequests/Respsonses) nie wydaje się, aby wtyczka do programu Adobe Acrobat dla IE wspierała tworzenie żądań w ten sposób (i prawdopodobnie nie jest to aplikacja internetowa obsługująca pliki PDF, chociaż nie wysłałem żadnych syntetycznych żądań z zakresu bajtów) – empire29

+0

Sprawdziłem iphone_user_guide.pdf (https://manuals.info.apple.com/MANUALS/1000/MA1565/pl_PL/iphone_user_guide.pdf) w Chrome i otrzymuję 2 żądania : Pierwszy jest w porządku. Drugi jest anulowany. –

+0

Wciąż widzę to zachowanie dzisiaj, a Fiddler pokazuje, że nie ma żadnych nagłówków "akceptowanych zakresów". –

0

Mam na myśli, że jesteś na miejscu: wtyczka nie może (i nie powinna) dzielić PDF na żądania.

Mam aplikację internetową, która obsługuje pliki PDF z żądania (pojedyncze żądanie) i wyświetla się w wtyczce. Wyświetla cały plik PDF bez uzyskiwania dalszych informacji.

Ponadto, jeśli szukasz sniffera HTTP, możesz wypróbować Fiddler. Znalazłem to przydatne podczas debugowania strony internetowej.

+0

Sprawdziłem to w HTTPWatch przy użyciu IE (oficjalnej "obsługiwanej" przeglądarki firmy) z najnowszą wtyczką Adobe Acrobat i ściągałem całe pliki PDF. Nie widziałem niczego w nagłówkach dotyczących zakresów bajtów. – empire29

2

Dla mnie w czerwcu 2016 roku, Firefox i IE11 tylko wykonać jedno połączenie.

Chrome wykonuje dwa połączenia, jeśli nie ma nagłówka Content-Disposition. Kiedy go brakuje, Chrome robi dwa GETy, wydaje się, że anuluje drugi i pokazuje plik PDF w przeglądarce. Serwer nie wie, że drugie zostało anulowane i ponownie wysyła plik PDF.

Po wysłaniu tego nagłówka z serwera Chrome wykonuje tylko jedno połączenie i uruchamia lub zapisuje plik.

Content-Disposition: attachment 

(Możesz również zasugerować nazwę pliku do użycia, gdy użytkownik zapisuje plik ...)

Content-Disposition: attachment; filename=test.pdf 
+1

Dodanie tego nagłówka zapobiega drugiej rozmowie, ale powoduje również, że Chrome pobierze plik PDF jak załącznik i nie będzie go od razu otwierać w przeglądarce. – kman

+0

Tak. Nadal uważam, że to błąd, ale jest to jednym sposobem. –

+2

Problem w tym, że jest wtyczka do przeglądarki Chrome. W przypadku Content-Disposition: attachment wtyczka PDF nie jest używana. Właśnie dlatego nie ma błędów. Więcej informacji tutaj: https://bugs.chromium.org/p/chromium/issues/detail?id=587709 –

0

W moich testach, podwójne prośby do occours PDF w Chrome, jeśli mam włączone rozszerzenie REST Console 4.0.2. Wyłączenie tego rozszerzenia powoduje, że Chrome działa zgodnie z oczekiwaniami (tylko jedno żądanie).

Edytuj: Włączone rozszerzenie Instapaper powoduje również, że Chrome wykonuje podwójne żądania do pliku PDF.

Powiązane problemy