HTTP keep-alive
response.setHeader("Pragma", "no-cache"); //캐시를 남기지마삼 "no-cache"
response.addHeader("Pragma", "no-store");
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);// 0밀리세컨즈
<script type="text/javascript" src="<%=request.getContextPath() %>/js/sample.js?time=<%=(new Date()).getTime()%>"></script>
Fetch_API
Fetch_API2
Promise
EventSource_API
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/event-stream; charset=UTF-8"
pageEncoding="UTF-8" buffer="8kb"%>
<%
boolean flag = true;
while(flag==true){
Thread.sleep(1000);
Date now = new Date();
%>
id:<%=now.getTime() %>
event:test
data:<%=now%>
data:line data
<%
out.flush();//버퍼 찼든 안찼든
}
System.out.println("test");
%>
//람다식 --> this는 윈도우
setTimeout(() => {
location.reload();
}, 1000);
setInterval(() => {
//비동기 요청 방식 실행 fetchAPI
fetch("getServerTime.jsp")
.then(function(response){
if(response.ok){
//success funtion
console.log(response);
return response.text(); //text,json,blob promise객체가 된다 바로 body에 안가고
}else{
//ok(200)이 아닌 다른 상태코드가 들어왔을때, error function
console.log(response.status);
}
}).then(function(text){ //위에 리턴된 promise객체에 대한 then
timeArea.html(text);
});
//1초마다 한번씩 ajax 호출하려면..
$.ajax({
url : "getServerTime.jsp",
method : "get",
dataType : "text",
success : function(resp) {
timeArea.text(resp);
},
error : function(xhr) {
console.log(xhr);
}
});
}, 1000);
cache
fetch -- api 사용
server-sent event방식이 부화는 덜 걸리지만
-- 무한반복 연결수립이 반복.. 한명과의 클라이언트와 연결이 유지되어야함