2009-09-25 9 views
5

Jak programowo określić, czy plik binarny na stronie internetowej (np. Obraz) zmienił się bez pobierania? Czy istnieje sposób użycia metod HTTP (w języku C# w tym przypadku) do sprawdzenia przed jego pełnym pobraniem?W jaki sposób można programowo określić, czy plik binarny na stronie internetowej (np. Obraz) zmienił się bez pobierania?

+0

Nie sądzę; jeśli poprosisz o rzeczywisty plik, otrzymasz strumień oktetów. AFAIK nie ma wywołań w specyfikacji, które pozwalają na zbadanie atrybutów plików w taki sposób, jaki potrzebujesz, ale jestem ciekaw, czy jest jakiś sposób ... – Joe

Odpowiedz

6

Można sprawdzić, czy plik został zmieniony, czy też nie, wysyłając żądanie pod nr HEAD.

Następnie powrócił nagłówek odpowiedzi może zawierać Last-Modified lub ETag Jeżeli wsparcie serwera WWW.

+0

Uzgodnione, ETag są najlepszym rozwiązaniem tego problemu, gdy są obsługiwane. –

+0

Tak, to jest podejście w rozwiązaniu, które zrobiłem. i ETag istnieje w użyciu, w innym przypadku wraca do Last-Modified. –

5

Możesz wykonać żądanie HEAD i sprawdzić ostatnio zmodyfikowaną wartość datetime, a także długość treści.

+0

Dziękuję za wzmiankę o długości treści: jest to prosta kontrola, ale wielki fallback, jeśli serwer nie jest skonfigurowany prawidłowo –

9

Naprawdę, chcesz wyszukać nagłówek Last-Modified po wydaniu żądania HEAD (zamiast GET). Napisałem kod, aby uzyskać HEAD przez WebClienthere.

+1

Należy zauważyć, że nie wszystkie witryny zawierają poprawny nagłówek Last-Modified, mimo że powinny mieć poprawnie buforowaną witrynę. –

+0

Ale można zrobić tylko tyle, jeśli serwer nie gra zgodnie z regułami. – Bryan

+1

Jeśli serwer nie udostępnia poprawnych nagłówków kontroli pamięci podręcznej (Last-Modified itp.), Nie ma możliwości sprawdzenia, czy plik zmienił się od czasu określonego poza pobieraniem i porównywaniem zawartości. –

Powiązane problemy