웹사이트 팝업 공지, 왜 'n일간 보지 않기'일까?
팝업 공지 보지 않기를 개발해보자
우리는 materialize 의 modal 을 사용해서 사용자들에게 공지할 것이 있으면 공지를 하고 있다! 이전에 사실 이미 개발을 해놨었다! 공지할 이미지를 우리의 github private repository 에 올리고 Q&A 플랫폼에서 그 github repo에서 정보를 가져와서 보여주는 방식이었는데 이는 우리 말고 다른 사람이 사용하기 어려웠기에 이를 Admin 기능으로 아예 Q&A 플랫폼 내부에 넣고 또 이 과정에서 팝업 공지 보지 않기 버튼을 개발하기로 했다.
할수있는 선택은 다음과 같았다.
- 오늘은 공지 더 이상 보지 않기 버튼
- 새로운 공지가 나타나기 전까지는 공지를 띄우지 않기 버튼 사용자 입장에서 새로운 공지가 나타나기 전까지는 공지를 띄우지 않기 버튼을 만들고 싶었는 데 자리에 앉아 곰곰이 생각해 봤더니 약간의 문제가 있었다.
New 공지가 있는지 확인하기
그 기능을 구현하기 위해서는 우선 local storage 에 지금 현재 공지로 떠있는 item 을 string화 하고 16자리 정도의 hash 값으로 변환을 하여 저장을 한다. 그리고 사용자가 메인페이지에 올때 마다 새로운 공지가 떴다는 걸 확인하기 위해서 현재 DB에 저장 되어있는 공지 값들을 다 불러오고 hash 계산을 하고 비교를 한다.
현재 DB에 매번 접근을 해야한다는 점이 제일 마음에 들지 않았다. 사용자에게 보여주지도 않을건데 계속 DB에 접근하는 것이 비효율적이라고 판단했기 때문이다.
며칠간 공지 안보기
그에 비해 오늘은 공지 더이상 보지 않기 버튼은 오로지 Client 단에서 모든 문제를 해결 할 수 있었다. 공지 안보기를 눌렀다면 localstorage 에 현재의 timestamp 를 저장한다. 그리고 사용자가 메인 페이지에 올때마다 저장한 timestamp 와 현재의 timestamp 를 비교하여 우리가 정한 기간이 지났다면 서버에 요청을 하는것이다.
보여주지 않는다면 서버에 요청또한 하지 않으니 훨씬 효율적이라고 판단을 하였다! 다만 엄청 많은 공지를 사용자에게 보여 줄 수는 없다.. (하루에 공지가 오전에 1개 오후에 1개 올라오면 오전에 버튼을 누른 사람은 오후에 실시간으로 볼 수 없다) 하지만!!! 너무 많은 공지는 사용자로 하여금 혼란을 가져오게 되니까 며칠간 공지 안보기 방법을 택하고 공지를 신중하게 올리는 것으로 결정을 했다!