许多网页加载所有内容以更改非常少的信息。
现在我想知道为什么开发人员不应该只使用 ajax 来处理主页请求?
在我自己的网页上,我想只使用 ajax 在我的网页上开发主要请求,但我不知道这种方法有什么具体的缺点。
有人知道为什么有人不应该这么多使用ajax吗?
搜索引擎、爬虫/蜘蛛、没有 javascript 的浏览器、屏幕阅读器和其他内容消费者不会对它很满意。
如果您已经支持完整内容的标准服务器端导航,则可以在您的网站上提供大量的 ajax 行为。查看渐进增强 (SO)和渐进增强 (wiki)。
整个前提实际上是使用 AJAX,您无需重新加载整个页面即可更新该网页的一小部分。这可以节省带宽,并且通常比重新加载整个页面要快得多。
但是如果您使用 AJAX 来加载整个页面,这实际上会适得其反。您必须编写自定义例程来处理 AJAX 数据的回调。它的大量额外工作几乎没有提高性能。
在哪里使用 AJAX 的一般规则:如果您更新页面的 >50%,只需重新加载,否则使用 AJAX。
我给你一个很好的理由。
如果您在浏览器中关闭 javascript,它将无法正常工作。
最大的问题是禁用 JavaScript 的用户。您的网站根本不适合他们。
好吧,您总是可以使用 jquery 不显眼地添加 onclick 事件并停止正常的 URL 处理。
例如:
HTML
<a id="ajaxify-this" href="my-working-url">Click me to do AJAXy stuff if you have javascript</a>
然后是 Javascript
$(document).ready(function() {
$("#ajaxify-this").click( function(e) {
updateContent(); // do something ajaxy with the page
return false; // stop the click from causing navigation
})
}
我只使用 JavaScript 和 EJS 作为我自己网站的模板引擎。离 SOFEA/SOUI 又近了一步。
搜索引擎、爬虫/蜘蛛、没有 javascript 的浏览器、屏幕阅读器不喜欢它,对。但我遵循主流;)
除了已经发布的答案之外,使用 AJAX 可能会对浏览器控制产生丑陋的副作用,例如停止按钮不起作用。
一件事是您希望内容具有静态 url,您希望人们能够链接到您的页面、为它们添加书签等。
如果一切都是 ajaxified,这可能会很棘手和/或乏味。
好吧,如果您想 AJAX 加载新页面,例如 Gmail 的工作方式,我建议您的链接是正常的 A HREF 链接指向真正的完整呈现页面 URL,并且使用 onclick 事件来停止尝试正常链接加载并进行 AJAX 调用。这里的问题是,除非您将这一切都很好地架构,否则您将进行几乎双重编码。
这样正常的非 JS 链接加载整个页面,而 JS 调用只加载新的部分或页面。这意味着蜘蛛索引也再次起作用。