문제

저는 웹 프로그래밍이 처음이고 한 페이지에서 다른 페이지로 데이터를 보내는 GET 및 POST 방법에 대해 알고 싶습니다.

GET 방식이 POST보다 빠르다고 하는데 왜 그런지는 모르겠습니다.내가 찾을 수 있는 한 가지 이유는 GET이 255자만 사용할 수 있다는 것입니다.다른 이유가 있나요?누군가 나에게 설명해주세요.

도움이 되었습니까?

해결책

속도에 관한 것이 아닙니다. 게시물이 더 적용되는 경우가 많이 있습니다. 예를 들어, 검색 엔진은 GET GET URL을 색인화하고 브라우저는 북마크를 추가하여 기록에 표시 할 수 있습니다. 결과적으로 GET 요청에 따라 DB를 수정하는 것과 같은 조치를 취하면 일부 봇이 URL을 가로 지르기 때문에 유해 할 수 있습니다.

다른 사례는 보안 문제 일 수 있습니다. Get을 사용하여 자격 증명을 게시하면 브라우저 기록 및 서버 로그 파일에 나열됩니다.

다른 팁

HTTP 게시물에 대한 또 다른 점은 HTTP 헤더가 2 번 호출 할 수 있다는 것입니다. Expect: 100-Continue 사용. 첫 번째 브라우저는 HTTP Post 헤더를 보내고 서버는 "HTTP 100 계속"으로 답장을 보냅니다. 브라우저가 이것을 수신하면 실제 본체를 보냅니다.

http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/

나는 이것이 저자가 찾고 있던 대답이라고 생각합니다.

HTTP에는 Get and Post에 대한 몇 가지 오해가 있습니다. 하나의 주요 차이점이 있습니다. GET는 Post가 필요하지 않지만 Get은 Idempotent 여야합니다. 이것이 의미하는 바는 부작용이 발생하지 않는다는 것입니다. 즉, 원하는만큼 웹 애플리케이션을 보낼 수 있습니다 (Ctrl+R 또는 F5를 여러 번 적중한다고 생각). 요청이 '안전'됩니다.

게시물로는 그렇게 할 수 없습니다. 게시물은 서버의 데이터를 변경할 수 있습니다. 예를 들어, 웹에서 항목을 주문하면 서버에서 상태가 변경되었으므로 항목이 게시물에 추가되어야합니다. 추가 된 항목 수는 1만큼 증가했습니다. 브라우저에서 브라우저는 나에게 경고합니다. 브라우저를 사용하면 브라우저가 간단히 요청을 보냅니다.

서버 get vs post는 순수한 컨벤션입니다. 즉, 내가 서버의 게시물을 ~ 아니다 전화를 반복하십시오. 이 작업을 수행하는 다양한 방법이 있지만 또 다른 질문입니다.

동일한 작업을 수행하기 위해 Get 또는 Post를 사용하는 경우 실제로 질문에 답하기 위해 성능 차이는 없습니다.

RFC를 읽을 수 있습니다 (http://www.w3.org/protocols/rfc2616/rfc2616.html) 자세한 사항은.

HTTP 프로토콜을 보면 게시 또는 GET은 똑같이 쉽고 빠르게 구문 분석해야합니다. 나는 성능 차이가 없다고 주장한다.

RAW HTTP 헤더를 살펴보십시오

http를 얻습니다

GET /index.html?userid=joe&password=guessme HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0

HTTP 게시물

POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

userid=joe&password=guessme

내 관점에서 Get and Post를 비교할 때 성능을 고려해서는 안됩니다.

당신은 "갈 곳"으로 생각하고 "무언가를하는 것"으로 게시해야합니다. 예를 들어 검색 결과 페이지가 "장소"이기 때문에 Get을 사용하여 검색 양식을 제출해야하며 사용자는이를 북마크하거나 나중에 기록에서 검색하려고합니다. 게시물을 사용하여 양식을 제출하면 사용자는 양식을 다시 제출하여 페이지를 재현 할 수 있습니다. 반면, 삭제 버튼을 클릭하는 것과 같은 조치를 수행하려면 사용자가 URL로 돌아올 때마다 작업이 반복되므로 GET와 함께 제출하고 싶지 않을 것입니다.

2016년에는 단 몇 센트만 썼습니다.

간단한 메시지 시스템을 만들고 있습니다.처음에는 POST를 사용하여 새로운 경고를 받았습니다.jQuery에는 다음이 있었습니다.

$.post('/a/alerts', 'stamp=' + STAMP, function(result)
{
});

그리고 PHP에서는 $_POST['stamp']를 사용했습니다.심지어 로컬 호스트에서도 얻었습니다. 90-100ms 이와 같은 모든 요청에 ​​대해.나는 단순히 다음과 같이 변경했습니다.

$.get('/a/alerts?stamp=' + STAMP, function(result)
{
});

그리고 PHP에서는 $_GET['stamp']로 전환했습니다.따라서 변경 사항은 1분도 채 걸리지 않습니다.이제 모든 요청에는 30-40ms.

그래서 GET은 POST보다 두 배 빠를 수 있습니다..물론 항상 그런 것은 아니지만 소량의 데이터에 대해서는 항상 동일한 결과를 얻습니다.

가져 오기 ~이다 약간 더 빠릅니다 값이 전송되기 때문입니다 헤더 와는 달리 게시하다 값은 요청에 전송됩니다 신체, 컨텐츠 유형이 지정하는 형식으로.

일반적으로 컨텐츠 유형은 Application/x-www-form-urlencoded이므로 요청 본문은 쿼리 문자열과 동일한 형식을 사용합니다.

Parameter = value & 또한 다른 양식에서 파일 업로드를 사용하면 다른 형식을 갖는 Multipart/Form-Data 인코딩을 사용합니다. 더 복잡합니다.

나는 다른 답변에 동의하지만, 사후 요청이 캐시되지 않는 동안 요청을 캐시 할 수 있다고 언급되지 않았습니다. 나는 이것이 일부 GET 요청이 더 빨리 수행되는 주된 이유라고 생각합니다. (점쟁이는 때때로 요청이 실제로 전송되지 않음을 의미합니다. 따라서 실제로는 더 빠른 GET 요청이 아니라 브라우저의 캐시입니다.)

HTTP 방법 : GET 대 게시물 : http://www.w3schools.com/tags/ref_httpmethods.asp

포스트는 헤더를 더 커지고 더 크게 만들어 지지만 차이는 실제로 무시할 수 있어야하므로 왜 이것이 왜 우려가되어야하는지 모르겠습니다.

HTTP를 말하는 올바른 방법은 작업에만 사용하고 데이터에 대한 게시물을 사용하는 것입니다. 당신은 할 필요가 없지만 Google 봇이 예를 들어, 인간이 찾은 링크를 따를 것이기 때문에 인간이 처리 할 수있는 데이터를 삽입, 삭제 또는 조작 할 수있는 경우도 원하지 않습니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top