我正在创建一个RESTful API(使用MVC.NET)以允许外部访问业务系统.API包括搜索资源.资源采用URI形式"/ example/search/pages/1 /?query = something".
示例:要搜索披萨,您将访问URI"/ example/search/pages/1 /?query = pizza",它将为您提供前10个结果.要获得第二页结果,您需要"/ example/search/pages/2 /?query = something"等.
我已经使用缓存控制HTTP标头来启用API上所有资源的公共缓存,目的是显着减少服务于API Web应用程序的服务器的负载.
但是,我不确定要用于搜索资源的缓存策略.由于资源(及其URI)根据您搜索的内容而有所不同,因此缓存页面似乎没什么意义.什么缓存策略(即通过缓存控制HTTP头缓存)人们推荐用于RESTful API上的搜索资源?没有缓存?私有缓存的到期时间非常短?短期到期的公共缓存?
大多数代理不会缓存使用查询字符串的任何内容.
如果你想要缓存,我建议使用POST-Redirect-GET模式为你的搜索请求制作新的URI.
POST搜索内容类型:application/x-www-form-urlencoded
长期=东西
303见其他位置:/ search/something/1
这将使缓存更加激进,但您必须制作这些URI,并且仍然会受到初始POST的影响.也就是说,如果这是有问题的查询,这将很好地解决问题.