Pobieranie daty modyfikacji strony internetowej

0

Mam pytanie:
Jak odczytać datę modyfikacji i wielkość strony internetowej bez konieczności jej pobierania (po co pobierać całą stronę)?

0

date modyfikacji wrzucaj w plik data.txt (na serwerze),potem banalne HTTP.Get

0

Chodzi mi tu o sprawdzanie czy strona uległa zmianom (także strony, które nie są moje)

0

Chodzi mi tu o sprawdzanie czy strona uległa zmianom (także strony, które nie są moje)

To ma moje oko nie sprawdzisz daty jej modyfikacji nie sciagajac jej. Sama strona to zazwyczaj kilkanascie KB to chyba nie az tak wiele bo nie musisz sciagac grafiki do niej :)

0

A czy dałoby radę odczytać chociaż wielkość tej strony bez jej pobierania (bo zazwyczaj jak sie strona zmienia to zmienia się też jej wielkość)?
Jakiego komponentu trzeba użyć?

0

A czy dałoby radę odczytać chociaż wielkość tej strony bez jej pobierania (bo

zazwyczaj

jak sie strona zmienia to zmienia się też jej wielkość)?

Jakiego komponentu trzeba użyć?

nie bedziesz pewny na 100%

0

Wiem, że to nie będzie pewne na 100 % ale mi wystarczy. Chciałem sobie zrobić prosty programik, który by mi sprawdzał co jakiś czas czy stronka nie zmieniła swojej wielkości. Proszę o pomoc...

0

Nie sprawdzisz tego, ponieważ jak strona zawiera skrypty php, to nie możesz ich ściągnąć, tylko ściągniesz wygenerowany przez nie kod html, a wiadomo, że strona o tym samym adresie może wyglądać inaczej chociażby w zależności od daty.

0

To ma moje oko nie sprawdzisz daty jej modyfikacji nie sciagajac jej.

A czy ktoś na swoje oko :) wie czy można sprawdzić datę modyfikacji strony bez jej pobierania?

0

A czy ktoś na swoje oko :) wie czy można sprawdzić datę modyfikacji strony bez jej pobierania?

no jasne ze mozna, modyfikacje jak i wielkosc, nie wiem co oni tak maroodza :-D
(najpierw poczytajcie RFC a potem odpowiadajcie :-P)

wysylasz takie samo zapytanie jak przy GET ale dajesz zamist niego HEAD i dostajesz same naglowki strony (bez tresci) z ktorych odczytujesz wartosc Last-Modified i Content-Length...

0

wysylasz takie samo zapytanie jak przy GET ale dajesz zamist niego HEAD i dostajesz same naglowki strony (bez tresci) z ktorych odczytujesz wartosc Last-Modified i Content-Length...

A możesz napisać jak to zrobić? Jaki komponent byłby najlepszy i jak go użyć?

0

Trochę się zagalopowałem. [wstyd] Z tym nagłówkiem Last-Modified nie jest tak dobrze, bo niektóre serwery go nie podają w pewnych sytuacjach (ciekawe jak sobie radzi JS z dokument.lastModified w takich przypadkach?) natomiast jeśli chodzi o Content-Length to też go czasami nie ma więc najlepiej wysłać GET, pobrać najpierw nagłówek strony i jak nie będzie Content-Length to pobrać resztę i zmierzyć jej objętość. Użyty przeze mnie moduł SimpleTcp możesz ściągnąć z mojej strony http://piechnat.prv.pl

uses SimpleTcp;

function GetSize(Host, Path: string): Integer;
var
  I: Integer;
  Tmp, Str: string;
  Clnt: TTcpClient;
begin
  Result := 0;
  Clnt := TTcpClient.Create;
  if Clnt.Open(Host, 80) then
  begin
    Tmp := 'GET ' + Path + ' HTTP/1.0' + EOL +
    'Host: ' + Host + EOL + EOL;
    Clnt.WriteText(Tmp);
    repeat
      Tmp := Clnt.ReadLn;
      if Tmp = '' then Break;
      Str := ConCat(Str, Tmp, EOL);
    until not Clnt.Active;
    I := Pos('Content-Length:', Str);
    if I > 0 then
    begin
      Delete(Str, 1, I + 15);
      Tmp := Copy(Str, 1, Pos(EOL, Str) - 1);
      Val(Tmp, Result, I);
    end
    else begin
      Str := '';
      while Clnt.ReadText(Tmp) > 0 do
        Str := ConCat(Str, Tmp);
      Result := Length(Str);
    end;
    Clnt.Close;
  end;
  Clnt.Free;
end;

Przykład:

GetSize('www.google.pl', '/');

1 użytkowników online, w tym zalogowanych: 0, gości: 1