��ǰλ�ã�首页 > 集团企业

集团企业

缓存Ajax调用

����:ʱ��:2019-04-13
使用正确的HTTP响应头来确保调用缓存的Ajax调用。除了绝对需要实时更新数据的Ajax调用之外。应用程序A正确修改HTTP标头LastQModified,acheQcontro1和Expires。 TR TR 减少用户感知响应时间,提高用户满意度,并提高平台或解决方案的可扩展性。尽可能使用Ajax并缓存Ajax调用,以提高用户满意度并提高可伸缩性。 TR TR TR 对于不熟悉常见Web术语的新手或人,您可以将Ajax视为隐藏在下拉菜单中的“方法”。当您键入字符串时,您可以给它一个提示或将其视为“方法”>隐藏在地图服务中允许您放大或缩小地图,而无需再次调用远程服务器。如果使用得当,Ajax不仅提供了出色的用户交互界面,而且还允许用户使用数据和对象进行交互,并且无需额外的服务器端工作,从而提高了可伸缩性。但是,如果使用不当,Ajax将大大增加服务器必须处理的请求数,从而创建一些独特的可伸缩性约束。但是,应该注意的是,虽然这些请求与浏览器端是异步的,但它们可能会导致服务器场内的请求泛滥并导致服务器在短时间内崩溃。尽管通常被称为技术,但最佳描述是浏览器用于创建更丰富,更具交互性的Web应用程序的技术,语言,方法和技术的集合。虽然这个缩写词中的文字描述了Ajax的实现,但真正的用户交互可能不是异步的,并且没有必要使用XML作为数据交换的格式。例如,您可以使用JSON而不是XML。但是  Javascript是不可替代的。 TR   Jesse  James  Garrett在Q05年发表的文章“AjaxA创建Web应用程序的新方法”中广泛提及他的文章“Ajax”。从广义上讲,Ajax具有在CSS和  DHTML中实现的标准表达式,交互式和动态显示使用文档对象模型(DOM)实现的功能,数据交换和操作机制(如使用XSLT或JSON实现的XML)和数据检索。机制。从最终用户的角度来看,数据检索通常是异步的(但不一定是异步的)。  Javascript是一种用于在客户端浏览器中实现交互的语言。使用异步数据传输时,使用Xmlhttprequest对象。我们最初的互联网体验是,一切都是请求和响应交互,Ajax的目的是终止这些复杂的交互。考虑到这一背景,让我们来看看与Ajax相关的可扩展性时需要注意的问题,最后看看缓存如何帮助我们解决它们。 TRTR 显然,我们一直希望创建可以增加用户互动和满意度的界面,从而增加收入,利润和股东财富。 Ajax就是这样一种方式,它可以为最终用户提供更丰富,更实时的体验。用户交互可以更快发生,因为它减少了浏览器中不必要的交互。用户可以放大或缩小而无需等待服务器的响应。您可以使用之前的条目预填充下拉菜单。当用户在搜索栏中输入查询字符串时,他们可以看到一些潜在的搜索字符串。他们可能会找到更具指导性的搜索词。使用Ajax的异步,您无需单击用户的下一页即可根据某些用户操作接收电子邮件,从而帮助我们将结果加载到客户端的浏览器中。 TR TR 但是,有些操作不利于平台的有效扩展。以用户在网站上搜索固定产品为例。我们可能希望弹出一个下拉菜单,在我们搜索项目时列出一些建议的搜索项目,因此我们需要查询产品目录以填充菜单。 Ajax通过向服务器发送请求来响应后续的击键,根据输入字符串的结果填充下拉菜单,并且用户在输入时不需要浏览器刷新页面。否则,可能会返回不完整字符串的完整搜索结果,因为用户尚未输入完整字符串。这两种实现在许多搜索和电子商务站点中都很常见。但是,让每个后续击键为服务器生成搜索查询不仅成本高昂,而且对后端系统也是一种浪费。例如,用户输入< 豆豆 宝贝”将触发111次连续搜索,但只有一次。这种用户体验可能令人印象深刻,但如果用户损失得足够快,那么在结束输入之前,8到10次搜索可能实际上不会返回结果。 TR TR 还有一种方法可以实现相同的目标,而不会增加10倍的流量。您可能能够根据本章的主题猜测此方法,即使用缓存。只需很少的工作,您就可以在客户端的浏览器中缓存最后一次Ajax交互的结果,或者可以将其缓存在CDN上(参见原理Q),页面缓存(参见原理23),应用程序缓存(参见原则24) 。首先,让我们看看如何利用浏览器的缓存。确保我们在浏览器中缓存内容的三个关键元素是HTTP响应中的cacheQ  contro1标头,Expires标头和LastQModified标头。我们在原理21中详细讨论了其中的两个。对于  CacheQContro1,避免使用noQ 存储,尽可能将其设置为  public,以便我们的终端(客户端)之间的任何代理和缓存(如CDN)并且服务器可以保存结果集。 ,向其他请求提供数据。当然,我们不希望将私有数据设置为  public,但我们希望尽可能利用pub1ic提供的高缓存。 TRTR 请记住,我们的目标是减少服务器上的负载。因此,  Expires标头的响应时间应设置得足够长,以便浏览器在本地缓存第一个查询的结果,以便后续请求可以从缓存中读取它。对于静态和半静态对象,例如用户头像或公司徽标
TR 您可以将  Expires设置为几天或更长时间。有些对象肯定是时间敏感的,例如在朋友的博客上阅读状态更新。在这种情况下,您可以将  Expires标头设置为几秒或几分钟,这会考虑实时和全局负载。 TR   可以使用LastQ  Modified标头处理条件GE请求。在这种情况下,为了与HTTP 1.1协议保持一致,如果缓存中的数据项正确或仍然有效,则服务器应以状态304响应。如名称Xmlhttpreuqest的Http部分所示,所有这些都是Ajax请求的行为与任何其他HTTP请求和响应相同。了解这一点有助于确保支持这些请求的系统的缓存功能,可用性和可伸缩性。 TR TR 当我们的内容可以在浏览器端更改时,前一种方法很有效,但对于逐渐扩展的搜索字符串,问题变得有点困难。当用户与搜索页面交互并输入搜索字符串时,就会发生这种情况。对于这种特殊情况,没有简单的解决方案。但是,使用  cacheQ  ontic1标头中的pub1iC参数可确保所有类似的搜索字符串都缓存在中间缓存和代理中。因此,搜索字符串的公共起点和公共中间部分可能在读取之前已经被缓存到某处。此特定问题可以推广到使用Ajax的页面中的其他特定对象。例如,请求拍卖中的项目的系统,请求社交网站中的消息的系统或邮件系统在发出请求时不应使用相对的位移量,而应使用特定的消息ID。相对名称,例如“page=3& item=2”识别系统第三页上的第二条消息,这可能会在系统更改时导致缓存一致性问题。更好的方法是使用id=124556”,这个ID代表一个原子项。它可以为此用户缓存而无需更改。如果其属性是公共的,则可以在将来使用。TR 更容易解决的是,我们知道我们必须制作静态或半静态项目集合的站点,例如有限或上下文敏感的产品目录。从客户端,我们可以异步获取这些结果,缓存它们,并在将来将它们用于同一客户。更重要的是,确保CDN和中间缓存或代理缓存它,以便其他用户可以执行类似的搜索。使用。 TR TR
���ű�ǩ: