Google Drive SDK (java) 对文件列表的查询请求很慢
Google Drive SDK (java) slow on query request for Files List
我正在使用 Google Drive SDK 通过服务帐户(访问和刷新令牌等)查询和检索文件。 问题不是它不工作,而是第一个查询请求在一段时间后比后续请求慢得多。我试过"priming the connection"通过在执行任何 "heavier" 请求之前检索 Drive.About ,但这似乎没有帮助。此外,我还根据 Drive 最佳实践实施了部分现场响应。需要任何想法或其他信息吗?
- 请注意,静态云端硬盘服务变量在初始检索后会被缓存,并在单例服务中重复使用。
** 我说的慢是指 2000+ 毫秒,没有任何指数回退,平均响应时间通常在 100-200 毫秒之间
样本:
检索文件
Drive service = retrieveGoogleDriveService();
Files.List request = service.files().list()
.setQ(q + " AND trashed=false AND hidden=false")
.setFields(fields);
FileList files = request.execute();
方法:检索GoogleDriveService
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory, new FileReader(new java.io.File(Home.class.getResource(CLIENT_SECRET).toURI())));
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setClientSecrets(clientSecrets)
.build()
.setAccessToken(ACCESS_TOKEN)
.setRefreshToken(REFRESH_TOKEN);
service = new Drive.Builder(httpTransport, jsonFactory, credential)
.setApplicationName([app name])
.build();
提前致谢
问题是由于使用 ApacheHttpTransport 而不是推荐的 GoogleNetHttpTransport.newTrustedTransport()。
我正在使用 Google Drive SDK 通过服务帐户(访问和刷新令牌等)查询和检索文件。 问题不是它不工作,而是第一个查询请求在一段时间后比后续请求慢得多。我试过"priming the connection"通过在执行任何 "heavier" 请求之前检索 Drive.About ,但这似乎没有帮助。此外,我还根据 Drive 最佳实践实施了部分现场响应。需要任何想法或其他信息吗?
- 请注意,静态云端硬盘服务变量在初始检索后会被缓存,并在单例服务中重复使用。
** 我说的慢是指 2000+ 毫秒,没有任何指数回退,平均响应时间通常在 100-200 毫秒之间
样本:
检索文件
Drive service = retrieveGoogleDriveService();
Files.List request = service.files().list()
.setQ(q + " AND trashed=false AND hidden=false")
.setFields(fields);
FileList files = request.execute();
方法:检索GoogleDriveService
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory, new FileReader(new java.io.File(Home.class.getResource(CLIENT_SECRET).toURI())));
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setClientSecrets(clientSecrets)
.build()
.setAccessToken(ACCESS_TOKEN)
.setRefreshToken(REFRESH_TOKEN);
service = new Drive.Builder(httpTransport, jsonFactory, credential)
.setApplicationName([app name])
.build();
提前致谢
问题是由于使用 ApacheHttpTransport 而不是推荐的 GoogleNetHttpTransport.newTrustedTransport()。