javascript - Ajax 操作真的应该有单独的 URL 吗?

标签 javascript php ajax http http-headers

我时不时地听到一种观点,认为非 Ajax 和 Ajax 操作使用相同的 URL 是不好的。

在我的应用程序中,我使用 Ajax 发送表单以获得更好的用户体验。对于禁用 JavaScript 的人,我的表单也可以工作。我的一些链接也是如此。我曾经对两者使用相同的 URL,并且根据是否是 Ajax 调用而使用适当的内容和 Content-Type 。这导致 Google Chrome 出现问题:Laravel 5 and weird bug: curly braces on back

我现在的问题是 - 对于 Ajax 和非 Ajax 操作使用相同的 URL 真的是个坏主意吗?为每个操作创建两个单独的 URL 是很痛苦的。或者也许有一个好的解决方法来管理缓存?从理论上讲,一个 header 可以完全改变行为,所以我不明白为什么我应该为我的应用程序创建额外的层并强制同一事物具有单独的 URL。

请分享您的意见。

最佳答案

HTTP 非常灵活,允许您按照自己想要的方式设计资源。您设计 API,设计取决于个人喜好。但在这种情况下,拥有一种可以响应不同类型请求的资源绝对没问题。这就是像 Content-type 这样的 HTTP header 存在的原因。

对于缓存,您可以使用 HTTP Etag header 。它是一个缓存 header ,强制客户端在使用缓存资源之前验证它们。

The ETag or entity tag is part of HTTP, the protocol for the World Wide Web. It is one of several mechanisms that HTTP provides for web cache validation, which allows a client to make conditional requests. This allows caches to be more efficient, and saves bandwidth, as a web server does not need to send a full response if the content has not changed

关于javascript - Ajax 操作真的应该有单独的 URL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648650/

相关文章:

php - 更新帖子时 Wordpress 重定向到 404

javascript - 如何在 Angular 中保存和加载 html WYSIWYG 编辑器中的内容

php - TinyMCE 从我的 HTML 代码中删除 CSS

javascript - 如果文本框中的值大于 1,则更改为复数

php - 需要通过唯一用户标识、最大轮次从 mysql 中提取数据,然后按另一个值排序

php - 将站点从 PHP 站点转换为完整的 LemonStand 电子商务站点

javascript - 使用 django 和 ajax 重新加载页面而不刷新

javascript - ajax、php 和 mysql 连接问题

ajax - Django测试客户端访问url时得到301重定向

javascript - 类变量在 JavaScript 中返回 undefined