How to specify an ETag in the .Net client library of the You

本文关键字:the Net client of You library in to specify an ETag | 更新日期: 2023-09-27 18:25:30

YouTube API v3文档建议使用ETag以获得更好的性能:

您的应用程序可以缓存API资源及其ETag。然后,当应用程序再次请求存储的资源时,它会指定与该资源相关联的ETag。如果资源已更改,API将返回修改后的资源和与该版本的资源相关联的ETag。如果资源没有改变,API返回HTTP 304响应(未修改)

从YouTube数据API入门''优化性能''使用ETags

我的问题是,首先如何使用.Net客户端库指定关联的ETag?

How to specify an ETag in the .Net client library of the You

使用etag的一般想法是,请求在请求中添加一个"If None Match"标头,该标头设置为etag的值;服务器已经被配置为通过检查etag并在没有任何改变的情况下返回304来响应该报头。因此,实际上,关键在于给定的客户端库是否支持添加自定义标头(如"If None Match"),然后在304返回时(或者不替换其缓存)是否有代码来处理它。

我知道YouTube javascript库是这样做的(在构造gapi.client.request对象时,您只需传递一个具有附加标头的"headers"对象),但从我对.Net客户端代码的肤浅阅读来看(https://code.google.com/p/google-api-dotnet-client/source/browse/Src/GoogleApis.Core/Apis/Requests/RequestBuilder.cs),看起来.Net客户端当前不允许您设置此标头。您可以始终在客户端结构之外发出直接的GET请求,或者扩展客户端以包含该功能,只要您随后也处理了缓存部分。不过,我可能不正确,并且查找了错误的代码。