방문자의 ip를 확인하기 위해 https://www.ipify.org/ 의 api를 이용했는데 이게 상황에 따라 응답이 약간 늦거나 하는 경우가 있어서 어차피 저희 서버에 요청을 하면 빠른 응답시간을 확보할 수 있어 서버에 php 파일 하나 업로드해서 저희 서버에 요청하기로 했습니다.
<?php
header('Content-Type: text/javascript ; charset=UTF-8');
header('Cache-Control: max-age=600');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 600) . ' GMT');
$callback = $_REQUEST['callback'];
$format = $_REQUEST['format'];
if($format == 'jsonp') {
$ret['ip'] = $_SERVER['REMOTE_ADDR'];
$json_str = json_encode($ret);
echo $callback."(".$json_str.")";
}
?>
요렇게 해서 https://www.ipify.org/ 에 요청할때 사용했던 스크립와 똑같이 사용할 수 있도록 변수를 똑같이 맞줘서 만들었습니다.
저희는 사이트 루트에 파일을 업로드 해서 사용합니다.
<script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
기존 스크립트 중 윗 부분만
<script type="application/javascript" src="https://도메인/업로드파일명.php?format=jsonp&callback=getIP"></script>
요렇게 바꿔서 사용하면 될 것 같습니다.
구글 태그매니저에 입력했던 스크립트 중 윗 부분만 자체서버 쪽으로 교체해주면 약간 멈칫하는 현상이 가끔 발생하는 것이 사라질 것 같네요. 물론 서버의 반응속도는 자체서버 상태에 따라 다르니 그건 ...
일단 저희는 저희 서버에서 요청하니 아주 빨라졌습니다.
브라우저에서 확인했을때 ip 똑같이 가져오는거 확인했으니 똑같이 잘 되겠죠.
PHP 코드 중 header('Content-Type: text/javascript ; charset=UTF-8'); 의 부분이 변경되었습니다.
매번 ip를 확인해서 반환해줄 필요가 없을 것 같아
header('Cache-Control: max-age=600');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 600) . ' GMT');
를 추가해서 10분 동안 동일한 요청에 대해서는 캐시된 데이터를 사용하게 했습니다.
멈칫 정도이신가요? 보고서 리스트에 반영되는게 초단위도 아니고 분단위로...늦을때도 있었네요.
우선 뭔가 빨라진다니 적용해 봐야겠네요..
항상 팁 공유해주셔서 감사드립니다.ㅠㅠ 저도 얼른 다른 분들에게 도움이 되는 팁을 제공해보고싶네요.