Extra Form
PHP PHP 7.2
CMS XpressEngine

git hub api를 이용해서 커밋된 마지막 날짜와 버전을 가지고 오는데 api 사용이 클라이언트 기준으로 시간당 60회 라고 합니다.

 

위젯을 만들어 주셔서 위젯을 사용해서 캐시를 1분 정도만 주면 해결은 되는데요. php에서 json 응답을 받고 스킨이 만들어지는 시간까지 컨텐츠가 출력되는데 기다려야 하는 상황이 좀 애로점이 있습니다.

 

그래서  js에서 ajax로 api 응답을 받아와서 해당 데이터로 바꿔주는 방식이 컨텐츠 출력하는데는 더 유리한 것 같아 라이믹스 공홈의 스크립트를 적용해서 구현했습니다. 

 

그런데 이게 방문이 많은 사이트의 페이지에 달려 있다면 클라이언트가 해당 페이지를 한시간 이내에 60회 접속 가능성도 있어서 쿠키에 저장하고 쿠키유지기간을 3분 정도만 주어도 좋을 것 같습니다. 

 

 

            var getGit_latestDate = function ( branch ) {
                $.ajax({
                    url : 'https://api.github.com/repos/rhymix/rhymix/git/refs/heads/' + branch,
                    dataType : "json",
                    success : function ( data ) {
                        $.ajax({
                            url : data.object.url,
                            dataType : "json",
                            success : function ( data2 ) {
                                var date = new Date(data2.committer.date);
                                var month = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
                                var day = (date.getDate() < 10 ? '0' : '') + date.getDate();
                                var hour = (date.getHours() < 10 ? '0' : '') + date.getHours();
                                var minute = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
                                
                                $('#download > #' + branch + ' > a > time').text(date.getFullYear() + '/' + month + '/' + day + ' ' +  hour + ':' + minute);
                            }
                        });
                    }
                });
            };
            var getGit_latestTag = function () {
                $.ajax({
                    url : 'https://api.github.com/repos/rhymix/rhymix/tags',
                    dataType : "json",
                    success : function ( data ) {
                        $('#download > #master > a > .version').text('v' + data[0].name);
                    }
                });
            };
            
            $( document ).ready(function() {
                getGit_latestTag();
                getGit_latestDate('master');
                getGit_latestDate('develop');
            });

 

 

 

천번째 부분은  master,develop 두가지를 받아오는 것 같고

두번째 부분은 버전명만 가져오는 것 같습니다.

 

 

뭐 왠만한 사이트는 메인 페이지라고 하더라도 한시간 동안 그 페이지를 60번(20번으로 쳐야 하나요?) 방문하는 일은 많지는 않을 것 같긴한데요.... 

 

그래도 너무 어렵지 않다면 쿠키로 저장해주고 쿠키가 있다면  ajax 작업 전에 확인하고 그 데이터로 바로  스킨의 값을 그것으로 바꿔주는 것으로 구현해 주면 좋을 것 같아 질문을 남겨봅니다.

  • profile
    렌더링은 ajax로 서버를 통해서 캐시파일 생성 및 검사 만료됐다면 서버에서 api요청하는 프로세스가 더 간단할것 같은데요?
  • profile profile
    ajax로 php파일을 실행하는 방법도 있을 것 같으데 제가 관련 지식이 없어서요..
  • ?

    음. 그냥 람보님이 만드신 위젯 그대로 캐시 시간을 6시간, 12시간 등 길게 잡으면 될 것 같습니다.

    12시간에 5초 쯤은 그냥...

  • ? profile

    네. 안되면 지금 처럼 그냥 클라이언트 제한 걸리는 거 그냥 냅두거나
    람보님 방식으로 해서 위젯 캐시 기간을 길게 두면 될 것 같긴 합니다.

    뭐 갱신이 바로 반영되면서 컨텐츠 출력에 불편이 없는 타협점을 찾아보니 궁금해져서요.

     

    그리고 폭풍커밋 하시는 적도 있어서 ㅋㅋ

  • profile
    어찌 어찌해서 쿠키적용을 해서 팁에 올렸습니다.