Я считаю, что код, который вы используете, будет работать правильно, , если соответствующие HTTP-заголовки установлены на стороне сервера (т. Е. LastModified
, ETag
, Cache-Control
и т. Д.),
В любом случае код, который вы используете:
InputStream inputStream = new URL(srcURL).openStream();
... является сокращением для:
URLConnection connection = new URL(srcURL).openConnection();
InputStream inputStream = connection.getInputStream();
Вы можете использовать экземпляр URLConnection
для управления кэшированием,используя метод setUseCache(boolean)
, до , вызывая getInputStream()
:
URLConnection connection = new URL(srcURL).openConnection();
connection.setUseCache(false);
InputStream inputStream = connection.getInputStream();
Для HTTP / HTTPS это должно быть эквивалентно установке значения заголовка Cache-Control: no-cache
в запросе, что вызываетСервер с хорошим поведением отправит вам самую последнюю версию ресурса.
Вы также можете сделать это, используя метод URConnection.setRequestProperty(key, value)
, который является более общим способом установки заголовков HTTP.Конечно, вы можете установить здесь и другие HTTP-заголовки, например If-None-Match
или If-Modified-Since
.Опять же, все заголовки должны быть установлены до , вызывая getInputStream()
.
URLConnection connection = new URL(srcURL).openConnection();
connection.setRequestProperty("Cache-Control", "no-cache"); // Set general HTTP header
InputStream inputStream = connection.getInputStream();