2012-11-09 2 views
2

최근에 Magento 사이트를 배치하고 광택을 사용하기 시작했습니다.Magento + Varnish - 특정 시간에 열거 나 닫는 상점에 대한 로직

그러나 우리는 각각의 상점에 열리고 닫히는 버튼 (근무 시간에 열렸습니다)을 배치하는 PHP 로직을 가지고 있으며, 닫은 후에는 주문을 받아야합니다. 또한 '장바구니에 담기'버튼에 대한 논리가있어 상점이 열렸을 때 고객에게 알립니다.

여기 VArnish로 페이지를 제공 할 때 실제로 로딩 시간이 길지만 저장소가 열리거나 닫히면 페이지가 새로 고쳐지지 않습니다 (물론).

이 경우 가장 좋은 방법은 무엇입니까?

  • 시간으로 가게
  • 낮은 TTL 세트가 열리고,이 논리가있는 모든 페이지에 대한 백엔드
  • 실행 니스 제거에서 이러한 동적 정보를 얻기 위해 AJAX 로직을 쓰기 (이 의지 캐시 히트 감소).

도움 주셔서 대단히 감사합니다.

최고 감사합니다. Mauricio.

답변

0

html로 각 상점의 개폐 시간을 저장하고 자바 스크립트를 사용하여 현재 상태를 사용자에게 표시하는 방법은 무엇입니까? 그렇게하면 캐시를 사용할 수 있으며 언급 한 동적 인 부분을 사용할 수 있습니다.

예 (주로 의사 코드가 작동하지 않습니다) :

<p id="open" data-open-start="8:00 UTC" data-open-end="16:00 UTC">We are open between 8:00 UTC and 16:00 UTC</p> 

<script> 
    // assuming JQuery 
    var open_start_time = [get data-open-start-time and parse it] 
    var open_end_time = [get data-open-end-time and parse it] 
    // some time zone conversions... 
    if (currentTime >= open_start_time && currentTime <= open_end_time) { 
    $('p#open').text('we are open!'); 
    } else { 
    $('p#open').text('sorry, we are closed!'); 
    } 
</script> 
+0

좋은 아이디어! 나는 오늘 오후에 시험 할 것이다 : DD – mbentow

+0

안녕 스벤. 나는이 아이디어에서 일하고있다. 용이성 및 작업의 관점에서 , 당신은 나를 AJAX/JSON을 통해 반환하는 것이 좋을 것이라고 생각하지 않습니다 만 : - 다음 나는 IDS와 쇼와 함께 내 JS 로직을 구축 할 수 있습니다, 상태 - 을 RestaurantID/숨기기, 내가 좋아하는 것을 바꿔 라. 도움 주셔서 감사합니다. 건배. – mbentow

+0

네, 그렇게 할 수도 있습니다. 그러나 당신이 언급 한 유스 케이스에 대해서는 그것이 필요하다고 생각하지 않습니다. (캐시 된) HTML에서 절대 개폐 시간을 인코딩하고 자바 스크립트를 통해 클라이언트 측에서 구문 분석하고 레스토랑이 클라이언트 측 시간과 정적 인 코드 데이터를 기반으로 현재 열려 있는지 확인할 수 있습니다. AJAX 요청이 필요하지 않습니다. –

0

여전히 전체 페이지를 캐시하려면 유일한 해결책이 제공 각 페이지에 대해 특별한 HTTP header "Expires"을 설정하려면 젠토를 업데이트하는 것입니다. 이 헤더를 사용하면 Varnish가 날짜가 끝나면 캐시를 만료 할 수 있습니다.

상점이 현재 닫혀 있고 그 반대 인 경우 다음 열의 값을 설정해야합니다.

+0

사이트의 모든 장바구니에 추가 버튼에 대한 논리가 있으므로 카테고리, 제품, CMS, 검색 등에 대한 논리가 있으므로 Varnish에 대한 Cache-hits를 대폭 줄일 수 있다고 생각합니다. JS를 추가하고 HTML에서 시간을 확인하려고합니다. – mbentow

관련 문제