2009-03-12 5 views
5

많은 웹 페이지가 모든 내용을로드하여 정보를 거의 변경하지 않습니다.페이지 요청에 아약스를 사용하여 페이지 콘텐츠를로드하는 것이 왜 좋지 않은가요?

이제 왜 개발자가 기본 페이지 요청에 아약스를 사용하지 않아야하는지 알고 싶습니다.

내 웹 페이지에서 아약스로 내 웹 페이지의 주요 요청을 개발하고 싶습니다. 그러나이 접근법에 대한 구체적인 단점을 모르겠습니다.

왜 누군가가 아약스를 그렇게 많이 사용하지 말아야하는지 생각하는 사람이 있습니까?

답변

1

JavaScript를 사용하지 않는 사용자가 가장 큰 문제입니다. 귀하의 웹 사이트는 단순히 그들을 위해 작동하지 않습니다.

2

아주 좋은 이유 하나를 말씀 드리겠습니다.

브라우저에서 자바 스크립트를 사용하지 않으면 작동하지 않습니다.

13

검색 엔진, 크롤러/스파이더, 자바 스크립트가없는 브라우저, 스크린 리더 및 기타 콘텐츠 소비자는 그다지 만족하지 않을 것입니다.

전체 콘텐츠에 대해 표준 서버 측 탐색을 이미 지원하는 경우 웹 사이트에서 엄청난 양의 아약스 반응을 제공 할 수 있습니다. progressive enhancement (SO)progressive enhancement (wiki)을 살펴보십시오.

+2

처음에는 볼 수없는 것에 대해 어떻게 행복하지 않을 수 있습니까? :) – Tyson

+0

귀하의 웹 사이트가 SEO 비우호적이기 때문에 당신은 행복하지 않을 것입니다. 일반적으로 Sitemaps 프로토콜과 같은 이러한 문제 (아약스 또는 플래시의 풍부한 웹 사이트의 경우)를 완화하는 기술이 있지만 일반적으로 자신과 웹에서 할 수있는 최선의 방법은 순수한 HTML로 웹 사이트의 흐름을 디자인하는 것입니다. – cherouvim

0

이미 게시 된 답변 외에도 AJAX를 사용하면 중지 버튼이 작동하지 않는 등 브라우저 컨트롤에 부작용이 생길 수 있습니다.

6

전체 전제는 AJAX를 사용하면 전체 페이지를 다시로드하지 않아도 해당 웹 페이지의 일부만을 업데이트 할 수 있다는 것입니다. 이렇게하면 대역폭이 절약되고 대개 전체 페이지를 다시로드하는 것보다 훨씬 빠릅니다.

그러나 AJAX를 사용하여 전체를 페이지로로드하는 경우 이는 실제로 비생산적입니다. AJAX 데이터의 콜백을 처리하기 위해 사용자 정의 된 루틴을 작성해야합니다. 성능 향상을위한 거의 추가 작업이 없습니다.

AJAX 사용 위치에 대한 일반 규칙 : 페이지의 50 % 이상을 업데이트하는 경우 AJAX를 다시로드하십시오.

+0

cherouvim에 명시된 분명한 이유 외에도 이것은 거대한 하나입니다. * 아무런 의미가 없습니다. * – annakata

0

한 것은 당신이 모든 것이 ajaxified 경우

,이 까다로운 일이 될 수있는 등, 당신은 사람들이 북마크, 페이지에 링크 할 수 있도록하려면, 정적 URL을 가지고 콘텐츠를 원하는 및/지루한.

+0

이 문제를 해결할 수있는 좋은 라이브러리가 있습니다. http://code.google.com/p/reallysimplehistory/ –

0

Gmail과 동일한 방식으로 AJAX에서 새 페이지를로드하려는 경우 링크가 정상적으로 표시되는 것이 좋습니다. 전체 렌더링 페이지 URL을 가리키는 HREF 링크와 시도를 중지하는 onclick 이벤트를 사용합니다. 정상 링크를로드하고 AJAX 호출을합니다. 여기서 문제는 아키텍처를 모두 잘하지 않으면 거의 이중 코딩을 수행한다는 것입니다.

이렇게하면 일반적인 JS 링크가 전체 페이지를로드하고 JS 호출은 새 부품이나 페이지 만로드합니다. 이것은 거미 색인 생성이 다시 작동 함을 의미합니다.

0

글쎄, jQuery를 사용하여 눈에 띄지 않게 onclick 이벤트를 추가하고 정상적인 URL 처리를 중단 할 수 있습니다.

예 :

HTML

<a id="ajaxify-this" href="my-working-url">Click me to do AJAXy stuff if you have javascript</a> 

다음 자바 스크립트

$(document).ready(function() {  
    $("#ajaxify-this").click(function(e) { 
     updateContent(); // do something ajaxy with the page 
     return false; // stop the click from causing navigation 
    }) 
} 
+0

충돌을 해결했습니다. 더 나은 ....) $ (문서) .ready (함수() \t \t { $ removeAttr ("HREF") ("탐색.");. }); ... JS가 활성화 된 경우 후 JQuery와 href를 내용을 비활성화하고 난 내 아약스 전화를 사용할 수 있습니다 : P –

+0

당신은 또한 e.preventDefault을 (사용할 수도); insteas of return false; – sabbour

0

난 내 자신의 webside를위한 템플릿 엔진으로 만 자바 스크립트와 EJS을 사용합니다. 한 단계 더 SOFEA/SOUI.

검색 엔진, 크롤러/스파이더, 자바 스크립트가없는 브라우저는 스크린 리더가 싫어합니다. 하지만 나는 주류를 따라 간다.)

관련 문제