Недавно я изменил свою существующую реализацию создания нового клиента для каждого запроса на один стандартный одноэлементный клиент.
Теперь, когда я начал читать документы, я обнаружил, что также используется вещь, называемая кешем. Был некоторый контент, в котором говорилось, что наличие нескольких кешей, пытающихся получить доступ к одному и тому же каталогу кеша, может привести к тому, что они наткнутся друг на друга и вызовут сбои.
Документы, на которые я смотрю, находятся в их репозитории github:
https://github.com/square/okhttp/wiki/Recipes
Мои вопросы:
Я специально не устанавливаю какой-либо кеш или управление кешем для своего клиента. Всего несколько значений времени ожидания и пул соединений. Будет ли какое-либо кеширование по умолчанию, если я буду использовать новый объект запроса и ответа для каждого вызова, который я делаю?
client = new Okhttpclient.Builder()
. connectTimeout (10000,TimeUnit.MILLISECONDS)
.readTimeout(15000,TimeUnit.MILLISECONDS)
. connectionPool (new ConnectionPool ())
.build();
Вышеупомянутый клиент установлен как singleton и возвращается ко всем вызывающим сервлетам. Запрос создается как
Request req = new Request.Builder()
.url(someurl)
.get()
.build();
Response res = client.newCall(req).execute();
Если да, то будут ли проблемы, как упомянутая часть топания. Мне вообще не нужно кеширование, так как в основном я просто пишу материал на другой сервер, и когда я читаю, мне нужно, чтобы это были текущие значения, а не кеширование... Так что мне нужно явно установить кеш -control установлено значение force-network, или мой параметр по умолчанию не будет таким же?
EDIT: это выдержка из кэширования ответов часть документов
Чтобы кешировать ответы, вам понадобится каталог кеша, который вы можете читать и записывать, а также ограничение на размер кеша. Каталог кеша должен быть закрытым, и ненадежные приложения не должны иметь возможность читать его содержимое!
Одновременный доступ нескольких кешей к одному и тому же каталогу кеша является ошибкой. Большинство приложений должны вызывать new OkHttpClient() ровно один раз, настраивать его со своим кешем и везде использовать один и тот же экземпляр. В противном случае два экземпляра кеша будут топать друг друга, повреждать кеш ответов и, возможно, вызывать сбой вашей программы.