我不时会听到一个意见,即非Ajax和Ajax操作的URL相同是坏的。
在我的应用程序上,我使用Ajax发送的表单可以提供更好的用户体验。对于禁用JavaScript的人,我的表单也可以。我的一些链接也是如此。我曾经两个都有相同的URL,只是使用适当的内容和Content-Type
,根据它是否是一个Ajax调用。这导致Google Chrome出现问题:Laravel 5 and weird bug: curly braces on back
我现在的问题是 - 对于Ajax和非Ajax操作具有相同的URL,这真的是个坏主意吗?为每个操作制作两个单独的URL是很痛苦的。或者可能有一个很好的解决方法来管理缓存?从理论上讲,一个标题可以完全改变行为,所以我不明白为什么我应该创建我的应用程序的额外层,并强迫同样的东西有单独的URL。
请分享您的意见。
答案 0 :(得分:1)
HTTP非常灵活,允许您按照自己的方式设计资源。您设计 API,设计符合个人喜好。但在这种情况下,让一个资源响应不同类型的请求绝对没问题。这就是像Content-type
这样的HTTP标头存在的原因。
对于缓存,您可以使用here标头。它是一个缓存标头,强制客户端在使用之前验证缓存的资源。
ETag或实体标签是HTTP的一部分,HTTP是万维网的协议。它是HTTP为Web缓存验证提供的几种机制之一,它允许客户端进行条件请求。这样可以提高缓存效率并节省带宽,因为如果内容未更改,Web服务器不需要发送完整响应