如何在YouTube API v3的.Net客户端库中指定ETag

时间:2014-10-02 14:40:54

标签: c# .net youtube youtube-api etag

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

  

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

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

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

1 个答案:

答案 0 :(得分:1)

使用etags的一般想法是请求在请求中添加“If-None-Match”标头,该标头设置为etag的值;服务器已配置为通过检查etag来响应该标头,如果没有任何更改则返回304。因此,实际上它取决于给定的客户端库是否支持添加自定义标头,如“If-None-Match”,然后如果它返回(或者如果不替换其缓存)则具有处理304的代码。

我知道YouTube javascript库的确如此(构建gapi.client.request对象时,你只需传递一个带有附加标题的'headers'对象),但是从我对.Net客户端代码的表面读取({{ 3}}),似乎.Net客户端目前不允许您设置此标头。您可以始终在客户端结构之外进行直接GET请求,或者扩展客户端以包含功能,只要您随后也处理了缓存部分。但是,我可能不正确,并查看错误的代码。