2014-10-02 35 views
0

通过YouTube API V3文档的.NET客户端库一个ETag建议使用的ETag获得更好的性能:如何指定在YouTube的API V3

您的应用程序可以缓存API资源和他们的ETag。然后,当您的应用程序再次请求存储的资源时,它会指定与该资源关联的ETag。如果资源发生了变化,则API会返回修改的资源和与该版本资源关联的ETag。如果资源没有改变,API将返回一个HTTP响应304(未修改)

Getting Started with the YouTube Data API\Optimizing performance\Using ETags

我的问题是你怎么能使用.NET客户端库开始与指定关联的ETag?

回答

1

使用etags的一般想法是请求在设置为etag的值的请求中添加了“If-None-Match”标头;服务器已经配置为通过检查etag并在没有任何变化的情况下返回304来响应该标题。所以真正归结到给定的客户端库是否支持像“If-None-Match”这样的自定义标头的添加,然后有代码来处理304(如果它返回)(或者如果不替换它的缓存) 。

我知道YouTube的JavaScript库做(构建gapi.client.request对象时,你只是传递具有产生额外的头一个“头”对象),但是从我的.Net客户端代码(https://code.google.com/p/google-api-dotnet-client/source/browse/Src/GoogleApis.Core/Apis/Requests/RequestBuilder.cs)的浅阅读,似乎.Net客户端不会让您设置此标题目前。只要您随后也处理缓存部分,您总是可以在客户端结构之外创建直接GET请求,或者扩展客户端以包含功能。不过,我可能不正确,并且看错了代码。

+1

.NET客户端允许您设置一个'ETagAction'('Ignore' /'IfMatch' /'IfNoneMatch')并在内部设置的ETag当操作关于单个项目(例如更新信道)。它不允许您在列表操作中使用ETags。 – i3arnon 2014-10-06 19:21:07

+0

我其实不确定搜索操作中ETag的含义。何时更新? – i3arnon 2014-10-06 19:22:56

+0

我不知道为什么它不会让你使用的etag与列表操作,但只能用插入和更新?因此,如果数据没有改变,不会再回到它感觉自然能够与列表中使用它。 – 2014-11-04 14:11:57