2011-04-21 4 views
3

나는 http://docs.djangoproject.com/en/dev/topics/cache/?from=olddocs에서 장고 문서를 읽고 있던 나는 다음 줄을 읽어Django는 GET 또는 POST 매개 변수없이 페이지 만 캐시합니까?

캐시 미들웨어 캐시 GET 또는 POST 매개 변수가없는 모든 페이지를.

GET 또는 POST 매개 변수가있는 페이지를 캐시하지 않는다는 의미입니까? 그것이 사실이라면 웹 사이트의 좋은 부분에 GET 또는 POST 매개 변수가 있기 때문에 다소 어리석은 것처럼 보입니다. 예를 들어, 페이지 매기기는 매우 일반적입니다. 아무도 이것을 명확히 할 수 있습니까?

감사합니다.

+1

I : 뷰에 대한

example.com/viewprofile?userid=65 

매개 변수가 URL의 일부로 전달되어야한다 네 질문에 대답 할 수 있을지 모르겠다. 그러나 장고는 매개 변수 전달을 피하기위한 아이디어를 중심으로 고안되었습니다. 크게 매개 변수를 필요로하는 urls.py에서 URL을 설정합니다. 매개 변수를 사용하기 전에 (주로 플러그인이 필요하기 때문에 jqgrid에 대해),이 경우에는 매개 변수에 따라 크게 달라질 수있는 데이터가 변경 될 수 있습니다. 어쩌면 그 사실은 캐시를 갖는 것이 많은 이익을 얻지 못할 것이라고 말했을 것입니다. – wilbbe01

+0

의견을 보내 주셔서 감사합니다. 무슨 뜻인지 알 겠어. 그러나 Django Pagination 튜토리얼에서도 GET 매개 변수를 사용합니다. [http://docs.djangoproject.com/ko/1.3/topics/pagination/](http://docs.djangoproject.com/ko/1.3/topics/pagination/)를 확인하십시오. 이 예제에서 Django는 "page"GET 매개 변수를 사용하여 다음/이전 페이지를 제공합니다. URL에서 정규 표현식을 사용하여 매개 변수를 사용하는 장고를 속일 수는 있지만 (1) Regex는 암캐이며 (2) HttpRequest 객체를 완전히 무시하는 것은 바보처럼 보인다. 감사! – rabbid

+1

그래, 나는 (1) 초를 ....하지만 그것이 효과가있을 때는 돈을 지불한다. 또한 urls.py 파일을 돌아보고 가끔은 거기에 도착하는 데에 대해 생각하는 것도 재미 있습니다. :) – wilbbe01

답변

2

일반적으로 응용 프로그램이 올바르게 설계된 경우 GET 또는 POST로 페이지를 캐시 할 수 없습니다. POST

POST 데이터를 사용

페이지는 일반적으로 사용자가 폼과 상호 작용 결과이다. 즉, POST 데이터를 캐시하면 예를 들어 사용자를 삭제하거나 새 레코드를 데이터베이스에 추가하라는 요청이 캐시 될 수 있습니다. 이것은 좋지 않을 것이다. 는 GET 매개 변수로

를 GET 사용

페이지가, 그들이 그와 같은 검색 페이지에 사용하기위한 것입니다 :

example.com/search?query=i%20might%20be%20never%20repeated%20again 

그런 캐싱 페이지의 더 많은 의미가 없다 - 그들은 수도 일생에 한 번만 렌더링됩니다.

당신이 잘못된 방향으로 GET 사용하는 경우에는

, 당신은 문제를 얻을 것이다 잘못된 방법 :

example.com/viewprofile/65 
+0

답장을 보내 주셔서 감사합니다. 나는 In-template 캐싱을 사용하여 Disqus, FB, Twitter와 같은 타사 도구를 캐시했습니다. 나는 그것이 지금까지 OK 일하고 있다고 생각합니다. – rabbid

관련 문제