Pobieranie pliku z URL - przechowywanie starszej wersji?

0

Ostatnie przypadki zdają mi się sugerować, że Windows/Java mają jakąś wbudowaną pamięć cache.

Program pobiera zawartość pewnego pliku za pomocą metody:

private String loadFile(URL url) throws IOException {
        InputStream is = url.openStream();
        Scanner sc = new Scanner(is);
        StringBuilder file = new StringBuilder();
        while (sc.hasNextLine()) {
            file.append(sc.nextLine()).append("\n");
        }
        sc.close();
        is.close();
        return file.toString();
    }

Jednak gdy treść pliku pod danym URLem się zmieni, przez parę minut program zachowuje się, jakby treść była ta sama, co wcześniej. Na początku myślałem, że źle zaprogramowałem metodę przeładowującą treść ponownie, bo przecież gdybym źle zrobił metodę pobierającą treść po raz pierwszy w chwili uruchomienia programu, to nie powinno mi się nic wyświetlać. Jednak zarówno metoda przeładowująca treść, jak i ta wczytująca zawartość po raz pierwszy, korzystają z wyżej podanego loadFile.

Poszukałem trochę w Googlu na temat jakieś pamięci Javy do zawartości plików z internetu, ale jedyne, co znalazłem, to pytania "jak to zrobić", a nie "jak się tego pozbyć".

Ma ktoś jakiś pomysł, skąd to się bierze i jak sobie z tym poradzić?

0

A plik jest gdzie? Na dysku sieciowym, lokalnym?

0

Na serwerze GitHuba.

0
ShookTea napisał(a):

Na serwerze GitHuba.

w takim razie skąd pewność że github tego nie cachuje, github to pewnie w 99% eventually consistency, także nie spodziewałbym się natychmiastowych updatów.
Dlatego też piszesz program ? co zwraca github (wireshark, tcpdump) ?

0
rubaszny_karp napisał(a):
ShookTea napisał(a):

Na serwerze GitHuba.

w takim razie skąd pewność że github tego nie cachuje, github to pewnie w 99% eventually consistency, także nie spodziewałbym się natychmiastowych updatów.
Dlatego też piszesz program ? co zwraca github (wireshark, tcpdump) ?

Mam pewność, że tego nie cachuje, ponieważ otwierając plik z tego samego linka, z którego próbuję pobrać, w przeglądarce, otrzymuję wersję najnowszą.
Wireshark znajduje pakiety pobrane z GitHuba, zaszyfrowane TLS-em.

1

Polacz sie tam plain socketem I juz bedziesz widzial wszystkie bajty

Ew polecam netty - szybciej latwiej ladniej
Ew wklej na Gita appke to zobaczymy

P.s dodaj se debuga do ssl a przez java option I Ci wypluje tez pakiety z tego co pamietam

1

Fiddler pozwala deszyfrować własny ruch https. Github powinien się na to nabrać. To coś w rodzaju Wiresharka, ale tylko do http/s.

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