我正在向 api '/api/customers' 发出请求 但是当我检查网络选项卡的标题时,我看到 url 为 "http://localhost:56912/api/customers?_=1579068576376">
无法理解这个额外的值"?_=1579068576376"是从哪里来
的下面是 jquery 代码:
//#customers is the id of table and I am using datatable plug in over it
$("#customers").DataTable({
ajax: {
url: "/api/customers",
dataSrc: "",
columns: [
{
data: "name",
render: function (data, type, customer) {
return "<a href='Customers/Edit" + customer.id + "'>" + customer.name + "'</a>'"
}
},
{
data: "id",
render: function (data) {
return "<button class='btn-link js-delete' data-customer-id="+ data+">Delete</button>"
}
}
]
}
});
以下是我尝试调用的 api:
public IEnumerable<CustomerDto> GetCustomers()
{
return _context.Customers.ToList().Select(Mapper.Map<Customers,CustomerDto>);
}
//Context is an instance of db from entity framework
它是时间戳(通常(或浏览器缓存破坏的另一个唯一编号。
缓存无效化通过使用唯一的文件版本标识符告诉浏览器有新版本的文件可用来解决浏览器缓存问题。因此,浏览器不会从缓存中检索旧文件,而是向源服务器发出新文件的请求。
它有效地确保当您有 get 请求时,浏览器不会认为它已缓存。
这似乎是一个时间戳之类的东西,从01.01.1970 00:00:00
到特定时间点所经过的毫秒。与 UNIX 时间戳非常相似,但精度更高。
看到这个小提琴:它显示时间戳是1/15/2020 6:09:36 AM (UTC)
.
据推测,这是缓存突发的当前时间戳(参见Athanasios Kataras的答案(。实际上,我没有找到任何来源可以确认这是由 ASP.NET MVC添加的。
编辑
您正在使用带有ajax
选项的DataTablejQuery插件,该选项具有
传递给 jQuery.ajax [见这里]
反过来jQuery.ajax
[禁用缓存] 的工作原理是将
_={timestamp}
附加到 GET 参数。[请参阅缓存参数下的 jQuery 文档]
这将解释添加的时间戳,尽管我不太明白为什么禁用缓存,因为根据 jQuery 文档,默认值应该是true
(即启用缓存(。
编辑 2
因为数据表设置了 jQuery 反缓存参数。[看这里]
非常感谢。这是由于缓存的默认值为假。我添加了一个参数 cache:true,问题已解决。 $("#customers"(。数据表({ 阿贾克斯:{ 网址: "/API/customers", dataSrc: ", 缓存:真, 列:。。。。。 ...