찾다
AJAX의 장점과 단점May 28, 2018 pm 05:19 PM
ajax개발 전망일하다

1. AJAX란 무엇입니까

2005년에 Adaptive Path Company의 Jesse James Garrett은 자신이 출판한 기사 "웹 애플리케이션에 대한 새로운 접근 방식"에서 Ajax에 대한 명확한 정의를 제시했습니다. 페이지 콘텐츠를 비동기적으로 처리합니다. 페이지 클릭 이벤트를 통해 지속적으로 서버에 요청이 전달되고, 서버는 실시간으로 최신 데이터를 반환하는 것이 AJAX의 기능입니다.

여러 아이디어와 기술의 융합으로 세분화하면 비동기 JavaScript 및 XML, 비동기 JavaScript 및 XML이라는 키워드입니다. AJAX를 사용하는 과정에서 우리는 XHTML 및 CSS 표준 기반 표현 기술 사용, 동적 표시 및 상호 작용을 위한 DOM 사용, 데이터 교환 및 처리를 위한 XML 및 XSLT 사용, XML HttpRequest 사용과 같은 기술을 사용하는 데 있어 반드시 필요합니다. 비동기 데이터 처리를 위해 JavaScript를 검색하고 사용하여 위의 기술을 결합합니다. 그 중 Ajax의 핵심 기술은 XHR이라고 불리는 XMLHttpRequest이다.

2. 개발 전망

Gmail은 이메일을 주고받을 때 Outlook Express와 거의 동일한 기능을 갖고 있으며, 클라이언트 프로그램 설치가 필요하지 않습니다. 기존 브라우저 중 어느 것도 PhotoShop과 같은 데스크톱 프로그램처럼 복잡한 이미지를 처리할 수 없습니다. 그러나 우리는 그 영향력과 영향을 무시할 수 없습니다.

3. 장점(사용자 경험 향상)

사용자 경험 예를 들어, 귀하의 집이 위치한 지역 사회가 어떤 사정으로 인해 단수에 직면한 경우 관련 부서에서는 두 가지 계획을 발표했습니다. 8시간 동안 물 공급이 중단되면, 이 8시간 동안 물 공급이 완전히 중단되며, 8시간 후에는 정상으로 돌아옵니다. 두 번째는 10시간 동안 물을 완전히 차단하지 않는 것입니다. 이 10시간 동안 물이 완전히 차단되지는 않지만 10시간 후에는 유속이 훨씬 줄어들어 정상적인 유속으로 돌아옵니다. 당신이라면 어떤 방법을 선택하시겠습니까? 분명히 후자인 것 같습니다.

비동기 전송은 문자 중심 전송이며 단위는 문자이고 동기 전송은 비트 중심 전송이며 전송 시 수신자와 발신자의 클럭은 다음과 같습니다. 일관성이 필요합니다.

비동기식 일반적으로 각 그룹은 8비트 문자입니다. 각 그룹의 헤드와 테일에는 시작 비트정지 비트가 있습니다. 전송 과정에서 수신자와 발신자의 시계가 필요하지 않습니다. . 일관성, 즉 비동기 발신자는 수신자가 언제 도착하는지 알지 않고도 언제든지 이러한 그룹을 보낼 수 있습니다.

각 비동기 전송 정보는 시작 비트로 시작합니다. 이 비트는 수신자에게 데이터가 도착했음을 알리고, 수신자가 전송이 끝날 때 데이터 비트를 응답, 수신 및 캐시할 시간을 제공합니다. 는 정보 전송이 종료되었음을 나타냅니다. 정지 비트는 신호를 다시 1로 변경하여 다음 시작 비트가 도착할 때까지 유지됩니다.

동시에 전송되는 비트 패킷은 훨씬 더 큽니다. 각각 고유한 시작 비트와 정지 비트를 사용하여 각 문자를 독립적으로 보내는 대신 이를 결합하여 함께 보냅니다. 우리는 이러한 조합을 데이터 프레임 또는 간단히 프레임이라고 부릅니다. 송신측과 수신측이 동기화되도록 수신기의 샘플링 속도가 비트 도착 속도와 일치하는지 확인하십시오.

동기화에는 이점도 있습니다. 동기 전송은 일반적으로 비동기 전송보다 훨씬 빠릅니다. 수신자는 각 문자를 시작하고 중지할 필요가 없습니다. 프레임 동기화 문자가 감지되면 다음 데이터가 도착할 때 이를 수신합니다. 또한 동기 전송의 오버헤드도 상대적으로 작습니다.

단점: 데이터 비트가 길수록 데이터를 캐시하는 데 필요한 버퍼가 커져 프레임 크기가 제한됩니다. 또한 프레임이 클수록 전송 매체를 차지하는 연속 시간이 길어집니다. 극단적인 경우에는 다른 사용자가 너무 오래 기다리게 만들 수 있습니다.

4. 작동 원리 및 기본 기술

XmlHttpRequest 개체를 사용하여 서버에 비동기 요청을 보내고 서버에서 데이터를 얻은 다음 javascript를 사용하여 DOM을 작동하고 페이지를 업데이트합니다.

XMLHttpRequest 객체의 속성.

그것의

properties는 다음과 같습니다:

onreadystatechange 상태가 변경될 때마다 트리거되는 이벤트에 대한 이벤트 핸들러입니다.

responseText 서버 프로세스에서 반환된 데이터의 문자열 형식입니다.

responseXML 서버 프로세스에서 반환된 DOM 호환 문서 데이터 개체입니다.

status status 일반적인 404(찾을 수 없음) 및 200(준비) 등 서버에서 반환된 숫자 코드

status 상태 코드에 수반되는 텍스트 문자열 정보

ReadyState 개체 상태 값

0(초기화되지 않음) 개체 설정되었지만 아직 초기화되지 않았습니다(아직 공개 메소드가 호출되지 않음)

   1(초기화) 객체가 생성되었으나 아직 전송 메소드가 호출되지 않음

  2(데이터 전송) 전송 메소드가 호출되었으나 현재 상태 및 http 헤더를 알 수 없음

  3(데이터 전송 중) 전송됨) 응답 및 http 헤더가 불완전하여 데이터의 일부가 수신되었습니다. 이때 responseBody 및 responseText를 통해 데이터의 일부를 가져오면 오류가 발생합니다. 시간이 지나면 responseXml 및 responseText를 통해 완전한 응답 데이터를 얻을 수 있습니다.

5. 단점

ajax 단점

이제 우리 대부분은 ajax가 제공하는 이점에 주목하기 때문에 ajax의 단점에 집중하겠습니다. 사용자 경험 개선 등을 위해 당사에 제공합니다. Ajax로 인한 단점은 무시되었습니다.

 아래에서 설명하는 ajax의 결함은 모두 이로 인한 것입니다.

1. Ajax는 뒤로 버튼을 종료하여 브라우저의 뒤로 메커니즘을 파괴합니다. 뒤로 버튼은 표준 웹 사이트의 중요한 기능이지만 JavaScript에서는 제대로 작동하지 않습니다. 이는 ajax로 인해 발생하는 심각한 문제입니다. 사용자가 이전 작업으로 돌아가서 취소하려는 경우가 많기 때문입니다. 그렇다면 이 문제에 대한 해결책은 없을까? 대답은 '예'입니다. Gmail에서 사용되는 ajax 기술이 이 문제를 해결한다는 것을 알고 있습니다. 그러나 그것은 단지 어리석지만 효과적인 방법을 사용하는 것입니다. 이렇게 하려면 숨겨진 IFRAME을 만들거나 사용하여 사용자가 기록에 액세스하기 위해 뒤로 버튼을 클릭할 때 페이지의 변경 사항을 재현하면 됩니다. (예를 들어 사용자가 Google Maps에서 다시 클릭하면 숨겨진 IFRAME에서 검색한 다음 검색 결과를 Ajax 요소에 반영하여 애플리케이션 상태를 당시의 상태로 복원합니다.)

그러나 이 문제가 있음에도 불구하고 문제를 해결할 수는 있지만 이로 인해 발생하는 개발 비용은 매우 높으며 이는 Ajax 프레임워크에서 요구하는 빠른 개발에 반합니다. 이는 ajax로 인한 매우 심각한 문제입니다.

2. 보안 문제

기술은 IT 기업에 새로운 보안 위협을 가져오기도 합니다. Ajax 기술은 기업 데이터에 대한 직접적인 채널을 구축하는 것과 같습니다. 이를 통해 개발자는 이전보다 더 많은 데이터와 서버 로직을 실수로 노출할 수 있습니다. Ajax 로직은 클라이언트 측 보안 스캐닝 기술에서 숨겨질 수 있으므로 해커가 원격 서버에서 새로운 공격을 생성할 수 있습니다. 또한 Ajax는 크로스 사이트 스크립팅 공격, SQL 주입 공격, 자격 증명 기반 보안 취약점과 같은 일부 알려진 보안 약점을 피하는 것도 어렵습니다.

3. 검색 엔진에 대한 지원이 상대적으로 약합니다.

4. 프로그램의 예외 메커니즘을 제거했습니다. 적어도 현재 관점에서 볼 때 ajax.dll 및 ajaxpro.dll과 같은 ajax 프레임워크는 프로그램의 예외 메커니즘을 파괴합니다. 이 문제에 대해서는 개발 과정에서 접한 적이 있는데, 확인해보니 인터넷상에 관련 소개가 거의 없는 것 같습니다. 나중에 Ajax와 전통적인 양식 제출 모드를 사용하여 데이터 조각을 삭제하는 실험을 직접 수행했는데... 이는 디버깅에 큰 어려움을 가져왔습니다.

5. 이 외에도 URL의 원래 의도와 리소스 위치를 위반하는 등의 몇 가지 다른 문제가 있습니다. 예를 들어, 제가 여러분에게 URL 주소를 제공한다면, Ajax 기술이 사용된다면 URL 주소 아래에 보이는 것과 이 URL 주소 아래에 보이는 것이 다를 수도 있습니다. 이는 자원 포지셔닝의 원래 의도에 어긋납니다.

6. 일부 휴대용 장치(예: 휴대폰, PDA 등)는 아직 Ajax를 잘 지원하지 않습니다. 예를 들어 모바일 브라우저에서 Ajax 기술을 사용하여 웹 사이트를 열면 현재 지원되지 않습니다. 물론, 이 문제는 우리와는 아무 관련이 없습니다.

6.
ajax의 여러 프레임워크

현재 우리가 주로 사용하는 ajax 프레임워크에는 ajax.dll, ajaxpro.dll, Magicajax.dll 및 Microsoft의 아틀라스 프레임워크가 포함됩니다. 두 프레임워크 Ajax.dll과 Ajaxpro.dll 사이에는 큰 차이가 없지만, Magicajax.dll은 캡슐화 측면에서 더 강력합니다. 예를 들어 앞서 말했듯이 ajax는 모든 문자열을 반환합니다. .magicajax는 그것을 캡슐화합니다. 하지만 이 기능은 우리에게 큰 편리함을 가져다 줄 수 있습니다. 예를 들어, 페이지에 목록이 있고 목록의 데이터가 지속적으로 변경되는 경우 Magicajax를 사용하여 이를 처리할 수 있습니다. 업데이트된 목록 컨트롤은 Magicajax 컨트롤 내에 배치되고 업데이트 간격은 페이지 로드에서 정의됩니다. atlas의 원리는 Magicajax의 원리와 유사합니다. 그러나 주의가 필요한 점은 이러한 프레임워크가 IE만 지원하고 브라우저 호환성을 다루지 않는다는 것입니다. 디컴파일 도구를 사용하여 코드를 살펴보면 이를 알 수 있습니다.

이러한 프레임워크 외에도 가장 일반적으로 사용되는 방법은 xmlHttpRequest 객체를 직접 생성하는 것입니다. 이 방법은 이전 프레임워크보다 더 유연합니다. 또한 여기서는 aspnet2.0과 함께 제공되는 비동기 콜백 인터페이스에 대해서도 언급하고 싶습니다. ajax와 마찬가지로 로컬 새로 고침을 수행할 수도 있지만 해당 구현은 실제로 xmlhttprequest 개체를 기반으로 합니다. 물론 이것은 Microsoft의 경쟁 전략입니다.

위 내용은 AJAX의 장점과 단점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Scrapy基于Ajax异步加载实现方法Scrapy基于Ajax异步加载实现方法Jun 22, 2023 pm 11:09 PM

Scrapy是一个开源的Python爬虫框架,它可以快速高效地从网站上获取数据。然而,很多网站采用了Ajax异步加载技术,使得Scrapy无法直接获取数据。本文将介绍基于Ajax异步加载的Scrapy实现方法。一、Ajax异步加载原理Ajax异步加载:在传统的页面加载方式中,浏览器发送请求到服务器后,必须等待服务器返回响应并将页面全部加载完毕才能进行下一步操

如何使用CakePHP中的AJAX?如何使用CakePHP中的AJAX?Jun 04, 2023 pm 08:01 PM

作为一种基于MVC模式的PHP框架,CakePHP已成为许多Web开发人员的首选。它的结构简单,易于扩展,而其中的AJAX技术更是让开发变得更加高效。在本文中,将介绍如何使用CakePHP中的AJAX。什么是AJAX?在介绍如何在CakePHP中使用AJAX之前,我们先来了解一下什么是AJAX。AJAX是“异步JavaScript和XML”的缩写,是指一种在

jquery ajax报错403怎么办jquery ajax报错403怎么办Nov 30, 2022 am 10:09 AM

jquery ajax报错403是因为前端和服务器的域名不同而触发了防盗链机制,其解决办法:1、打开相应的代码文件;2、通过“public CorsFilter corsFilter() {...}”方法设置允许的域即可。

Nginx中404页面怎么配置及AJAX请求返回404页面Nginx中404页面怎么配置及AJAX请求返回404页面May 26, 2023 pm 09:47 PM

404页面基础配置404错误是www网站访问容易出现的错误。最常见的出错提示:404notfound。404错误页的设置对网站seo有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛。404页面的目的应该是告诉用户:你所请求的页面是不存在的,同时引导用户浏览网站其他页面而不是关掉窗口离去。搜索引擎通过http状态码来识别网页的状态。当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引。而如果返回200或302状态码,搜索引擎就会为该链接建立索引

什么是ajax重构什么是ajax重构Jul 01, 2022 pm 05:12 PM

ajax重构指的是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更合理,提高软件的扩展性和维护性;Ajax的实现主要依赖于XMLHttpRequest对象,由于该对象的实例在处理事件完成后就会被销毁,所以在需要调用它的时候就要重新构建。

php如何使用AJax和json实现登录验证php如何使用AJax和json实现登录验证Jun 19, 2023 pm 01:28 PM

php用AJax和json实现登录验证的方法是:1、创建一个jsp示例文件,导入jquery依赖和fastjson依赖文件;2、新建login.js文件,获取用户名和密码文本内容;3、新建controller类,查询用户是否存在并把对象转化为json字符串类型返回给js文件;4、js判断是否成功然后进行页面跳转即可。

什么是ajax同步异步什么是ajax同步异步Jul 04, 2022 pm 03:57 PM

ajax同步的意思是当JavaScript代码加载到当前ajax的时候会把页面里所有的代码加载停止,页面处于假死状态,当这个ajax执行完之后,页面才会接触假死状态,代码继续运行;ajax异步的意思则是当前ajax代码运行的时候其他代码一样也可以运行。

ajax请求时post和get的区别是什么ajax请求时post和get的区别是什么Jul 01, 2022 pm 05:04 PM

区别:1、get把参数数据队列加到提交表单的ACTION属性所指的URL中,而post是通过“HTTP post”机制,将表单内各个字段与其内容放置在“HTML HEADER”内一起传送到ACTION属性所指的URL地址;2、get方式,服务器端用“Request.QueryString”获取变量的值,对于post方式,服务器端用“Request.Form”获取提交的数据。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.