是不是Ajax太糟糕了?

时间:2011-10-17 08:33:21

标签: javascript ajax

我正在开发一个带有客户端javascript框架(dojo/dijit)的网站。与所有javascript / framworks一样,您开始使用Ajax进行快速调用和更新。我的问题是,在使用Ajax时何时使用链接有一般的经验法则?我只是问,因为我似乎更多地使用Ajax,而我担心初始页面中的任何错误都可能传播到其他元素。或者随着内容不断被替换,可能会出现问题。

我想我要问的是,在网页中使用大量Ajax是否有任何缺陷?

修改

SEO - 不是问题。我现在只想到客户端服务器问题。如果你想要优秀的SEO,链接会打赌阿贾克斯下来

6 个答案:

答案 0 :(得分:15)

在我看来,使用大量的AJAX调用有三个问题。

第一个是从用户的角度来看。如果我作为用户进行大量导航,我希望能够在浏览器中使用我的后退/前进按钮并让它们正常工作。如果他们这样做,那么就没有问题。如果他们不这样做,那么您在我的浏览器中打破了基本导航。

其次是书签/索引。作为用户,我可能想要为某些内容添加书签,以便我可以回复它或分享它。作为搜索引擎的索引器,您作为开发人员希望让搜索引擎“看到”您拥有的所有信息页面,以便人们可以找到您的网站。这两者都需要某种独特的URL。

第三是从开发的角度进行调试。你扔在页面上和/或动态替换的随机内容越多,追踪错误的难度就越大。您拥有的越多,需要更好地集成或者可能会更糟糕地进行交互。

答案 1 :(得分:4)

没有

我认为不使用这两个页面或者ajax可以有它们的优点,但是一旦加载和缓存javascript文件以及ajax表,开销的剩余部分就是数据库调用,使用链接会导致更多的页面被加载,我认为这是一个比数据库调用更重的成本。

答案 2 :(得分:2)

就个人而言,只要工作正常(并且速度快)并且不会破坏我的行为,我就会遇到很多Ajax。更具体地说,我希望能够通过电子邮件发送指向特定页面的链接,将其添加为书签 - 通常的内容。

答案 3 :(得分:2)

使用太多AJAX时出现的一个问题是SEO。

如果您正在创建Web应用程序,那么使用AJAX是一件好事。但是如果你想让搜索引擎找到你网页上的每个单词,那么使用AJAX会让它变得困难。

答案 4 :(得分:2)

根据我的说法,很多ajax对你的网站的SEO健康状况有害... :(最好使用ajax是用于显示错误,消息和小任务。我认为使用Ajax提交表单是不是一件好事。

我在下面提到一些主要的缺点,如果我错过了一些请发表评论。

Firstly,由于它们的动态特性,与静态页面相比,Ajax接口通常更难开发。

Secondly,使用连续的Ajax请求动态创建的页面不会自动向浏览器的历史引擎注册,因此单击浏览器的“后退”按钮可能无法将用户返回到启用Ajax的页面的早期状态,但可能会将它们返回到之前访问过的最后一页。解决方法包括使用不可见的IFrame来触发浏览器历史记录的更改,并在运行Ajax时更改URL的锚点部分(在#之后),并监视它的变化。

Thirdly,动态网页更新还使用户难以为应用程序的特定状态添加书签。存在这个问题的解决方案,其中许多使用URL片段标识符('#'之后的URL部分)来跟踪并允许用户返回给定状态的应用程序。

Fourthly,由于大多数网页抓取工具不执行JavaScript代码,因此可公开索引的网络应用程序应该提供一种替代方法来访问通常使用Ajax检索的内容,以允许搜索引擎对其进行索引。

Fifthly,任何浏览器不支持JavaScript或XMLHttpRequest的用户,或者只是禁用此功能的用户,将无法正确使用依赖于Ajax的页面。同样,移动电话,PDA和屏幕阅读器等设备可能无法支持所需的技术。能够使用Ajax的屏幕阅读器可能仍然无法正确读取动态生成的内容。让用户执行功能的唯一方法是回退到非JavaScript方法。这可以通过确保链接和表单可以正确解析而不仅仅依赖于Ajax来实现。在JavaScript中,表单提交可以通过“return false”停止。

Sixthly,相同的源策略阻止某些Ajax技术跨域使用,尽管W3C有一个XMLHttpRequest对象的草案,可以启用此功能。

Seventhly,与其他Web技术一样,Ajax也有自己的一组漏洞,开发人员必须解决这些漏洞。熟悉其他Web技术的开发人员可能必须学习新的测试和编码方法来编写安全的Ajax应用程序。

Lastly,Ajax支持的接口可能会大大增加用户生成的Web服务器及其后端(数据库或其他)请求的数量。这可能导致更长的响应时间和/或额外的硬件需求。

Finally,我不会说ajax很糟糕,但丹尼尔评论说,"Too much" is always a bad thing是真的。 Facebook是使用巨大的ajax但以适当方式使用的网站之一。 已经实现了针对上述问题的许多解决方案例如,使用不可见的iframe可以检索历史数据。 URL片段标识符允许用户书签并返回到应用程序的特定状态。它还支持后退按钮功能。

请参阅:AJAX and its Drawbacks

希望这有帮助。

答案 5 :(得分:1)

您的网页是否会使用比Google文档或Gmail或Facebook更多的Ajax? 比它太多了。