KR101490516B1 - 객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버 - Google Patents
객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버 Download PDFInfo
- Publication number
- KR101490516B1 KR101490516B1 KR20130098105A KR20130098105A KR101490516B1 KR 101490516 B1 KR101490516 B1 KR 101490516B1 KR 20130098105 A KR20130098105 A KR 20130098105A KR 20130098105 A KR20130098105 A KR 20130098105A KR 101490516 B1 KR101490516 B1 KR 101490516B1
- Authority
- KR
- South Korea
- Prior art keywords
- cache key
- request
- client
- attribute
- content
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0884—Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
웹 서버와 클라이언트 사이에서 프록시 서버가 컨텐츠를 제공하며, 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하면, 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득한다. 그리고 획득한 속성 캐시 키를 토대로 상기 요청에 대한 웹 서버의 인증 여부, 그리고 획득한 객체 캐시 키를 토대로 상기 요청에 대응하는 컨텐츠의 캐싱 여부를 토대로, 요청에 대응하는 컨텐츠를 클라이언트로 제공한다.
Description
본 발명은 HTTP(Hypertext Transfer Protocol) 프록시 서버와, HTTP 프록시 서버가 컨텐츠를 제공하는 방법에 관한 것이다.
통신 기술의 발달로 네트워크를 통하여 다양한 컨텐츠들이 디지털화되면서 인터넷을 통해 컨텐츠 공유가 이루어지고 있으며, HTTP 프록시(이하 프록시) 서버는 인터넷 상에 컨텐츠를 제공하는 장치와 컨텐츠를 수신하는 장치 사이에서 프록시 서버가 데이터를 중계하면서 원활한 서비스가 운영될 수 있도록 서비스를 보조하는 역할을 수행한다.
프록시 서버는 컨텐츠를 수신하는 장치 즉, 클라이언트와 컨텐츠를 제공하는 장치 즉, 웹 서버 사이에서 위치되어, 클라이언트로부터 특정 HTTP 주소에 대해서 데이터요청을 요구를 받으면, 해당 인터넷 주소가 저장소에 있으면 인터넷 주소에 대응하는 데이터를 즉시 찾아서 클라이언트로 제공하고, 인터넷 주소가 저장소에 없으면 인터넷 주소의 서버로부터 데이터를 가져와서 클라이언트에 제공한다. 그리고 클라이언트에 제공한 정보에 대응하는 인터넷 주소는 저장소에 저장한다. 프록시 서버가 클라이언트로부터의 요구에 대응하는 데이터를 저장소에 저장하는 기능을 캐싱(caching)이라고 한다.
프록시 서버를 통하여 제공되는 컨텐츠는 동적 컨텐츠(dynamic content)와 정적 컨텐츠(static content)로 나눌 수 있다.
동적 컨텐츠는 클라이언트로부터의 요청에 해당하는 기본 URL(uniform resource locator) 이외에 GET 파라미터나 요청 HTTP 헤더가 서로 다르면, 서로 다른 값으로 응답하는 컨텐츠를 나타낸다. 동적 컨텐츠는 일반적으로 역방향 프록시(Reverse Proxy 또는 Web Server Acceleration)를 사용하지 않는 구조에서 서비스된다.
정적 컨텐츠는 클라이언트로부터의 요청에 해당하는 기본 URL 이외에 GET 파라미터나, HTTP 요청 헤더가 서로 달라도 동일한 값으로 응답하는 컨텐츠를 나타낸다. 정적 컨텐츠는 프록시 서버에서 캐싱을 이용해서 서비스가 가능한 컨텐츠이다.
한편 정적 컨텐츠들을 이용한 서비스는 공용 정적 컨텐츠 서비스 (public static content service)와 사설 정적 컨텐츠 서비스 (private static content service)로 나눌 수 있다. 공용 정적 컨텐츠 서비스는 클라이언트에 대한 구분 없이 모든 요청에 대하여 응답이 이루어진다. 사설 정적 컨텐츠 서비스는 클라이언트로부터의 요청과 함께 전송되는 인증키를 이용하여 해당 컨텐츠에 대한 이용 권한이 있는 것으로 확인된 경우에만 응답하는 서비스이다. 동일한 컨텐츠에 대한 클라이언트의 요청에 사용되는 인증키는 GET/POST 파라미터, HTTP 요청 헤더 중 하나 이상를 이용해서 요청된다.
사설 정적 컨텐츠 서비스 제공시, 프록시 서버를 사용하지 않거나 프록시 서버를 사용하여도 프록시 서버가 캐싱을 하지 않도록 하는 것이 일반적이다. 그러나, 프록시 서버를 사용하지 않는 경우 웹 서버가 클라이언트로부터의 모든 요청에 대하여 직접 응답해야 하며, 이에 따라 웹 서버의 부하가 증가하여 서비스속도가 느려질 수 있다.
또한 프록시 서버가 웹서버 앞단에 설치되는 역방향 프록시 구조의 경우, 역방향 프록시 서버에 클라이언트가 제출한 인증키를 검사하는 비즈니스 로직을 추가하여 역방향 프록시에서 캐싱을 사용할 수 있다. 그러나 이러한 경우에는 프록시 서버가 인증을 위한 별도의 로직을 구현하고 이를 수행하여야 함에 따라, 프록시 구조의 복잡화 및 처리 시간 증가가 발생될 수 있다.
본 발명이 해결하고자 하는 과제는 사설 컨텐츠 서비스 제공시 정적 컨텐츠를 캐싱하고 캐싱된 데이터를 서비스하기 위한 컨텐츠 제공 방법 및 이를 이용한 프록시 서버를 제공하기 위한 것이다.
위의 기술적 과제를 위한, 본 발명의 특징에 따른 컨텐츠 제공 방법은, 웹 서버와 클라이언트 사이에서 프록시 서버가 컨텐츠를 제공하는 방법에서, 상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계; 상기 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하는 단계; 상기 획득한 속성 캐시 키를 토대로 상기 요청에 대한 웹 서버의 인증 여부를 판단하는 단계; 상기 획득한 객체 캐시 키를 토대로 상기 요청에 대응하는 컨텐츠의 캐싱 여부를 판단하는 단계; 및 상기 판단 결과들을 토대로 상기 요청에 대응하는 컨텐츠를 상기 클라이언트로 제공하는 단계를 포함한다.
상기 클라이언트로 제공하는 단계는 상기 요청에 대한 웹 서버의 인증이 이전에 이루어졌던 것으로 판단되고, 상기 요청에 대응하는 컨텐츠가 상기 프록시 서버에 캐싱되어 있는 것으로 판단되는 경우, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.
상기 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계는 상기 클라이언트로부터 상기 요청이 수신된 시간인 요청 시간이 상기 웹 서버의 인증이 마지막으로 이루어진 시간으로부터 설정 시간 이내인 경우, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공할 수 있다.
한편 상기 클라이언트로 제공하는 단계는 상기 요청에 대한 웹 서버의 인증이 이전에 이루어지지 않았던 경우에는, 상기 요청과 이에 해당하는 인증키를 상기 웹 서버로 전달하면서 인증을 요청하는 단계; 및 상기 웹서버로부터 상기 요청에 대한 인증 확인에 따른 응답이 수신되고, 상기 요청에 대응하는 컨텐츠가 상기 프록시 서버에 캐싱되어 있는 것으로 판단되는 경우, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.
또한 상기 클라이언트로 제공하는 단계는 상기 요청에 대한 웹 서버의 인증이 이전에 이루어졌지만, 상기 요청에 대응하는 컨텐츠가 상기 프록시 서버에 캐싱되어 있지 않은 경우에, 상기 요청을 상기 웹 서버로 전달하면서 컨텐츠 제공을 요청하는 단계; 상기 요청에 따라 제공되는 컨테츠를 수신하고 캐싱하는 단계; 및 상기 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.
본 발명의 다른 특징에 따른 컨텐츠 제공 방법은, 웹 서버와 클라이언트 사이에서 프록시 서버가 컨텐츠를 제공하는 방법에서, 상기 프록시 서버가, 웹 서버로부터 제공되는 컨텐츠를 캐싱하고 캐싱된 컨텐츠에 관련된 객체 정보--상기 객체 정보는 객체 캐시 키를 포함함--를 저장하는 객체 캐시 키 테이블을 생성하는 단계; 상기 프록시 서버가, 웹 서버에 의하여 인증이 이루어진 클라이언트의 요청에 관련된 속성 정보--상기 속성 정보는 속성 캐시 키를 포함함--를 저장하는 속성 캐시 키 테이블을 생성하는 단계; 상기 프록시 서버가, 상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계; 상기 프록시 서버가, 상기 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하고, 획득한 객체 캐시 키와 속성 캐시 키가 각각 당하는 객체 캐시 키 테이블과 속성 캐시 키 테이블에 저장되어 있는지를 판단하는 단계; 및 상기 프록시 서버가, 상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있고, 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있는 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계를 포함한다.
여기서, 상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있지 않은 경우, 상기 컨텐츠 제공 방법은, 상기 요청과 이에 해당하는 인증키를 상기 웹 서버로 전달하면서 인증을 요청하는 단계; 상기 웹서버로부터 상기 요청에 대한 인증 확인에 따른 응답이 수신되는 경우, 상기 획득한 속성 캐시 키를 상기 속성 캐시 키 테이블에 저장하는 단계; 및 상기 요청에 대한 인증 확인에 따른 응답이 수신되고, 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있는 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계를 더 포함할 수 있다.
이외에도, 상기 속성 캐시 키 테이블에 상기 획득한 속성 캐시 키에 대응시켜, 상기 웹 서버에 의한 인증 확인을 한 시간에 지정된 일정 시간을 추가해서 속성 캐시 키 갱신 시간으로 저장하는 단계를 더 포함할 수 있다.
한편, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계는, 상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 속성 캐시 키에 대응하는 속성 캐시 키 갱신 시간을 경과하지 않은 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공할 수 있다.
또한 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있지 않은 경우, 상기 컨텐츠 제공 방법은, 상기 요청을 상기 웹 서버로 전달하면서 컨텐츠 제공을 요청하는 단계; 상기 요청에 따라 제공되는 컨테츠를 수신하고 캐싱하는 단계; 상기 획득한 객체 캐시 키를 상기 객체 캐시 키 테이블에 저장하는 단계; 및 상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있는 경우, 상기 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계를 더 포함할 수 있다.
이 경우, 상기 객체 캐시 키 테이블에 상기 획득한 객체 캐시 키에 대응시켜, 상기 웹 서버에 컨텐츠의 변경 여부를 확인한 시간인 객체 캐시 키 갱신 시간을 추가하여 저장하여 단계를 더 포함할 수 있다.
여기서, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계는, 상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 객체 캐시 키에 대응하는 객체 캐시 키 갱신 시간을 경과하지 않은 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공할 수 있다.
한편, 이러한 컨텐츠 제공 방법에서, 상기 클라이언트의 요청은 GET 파라미터와 도메인 정보를 포함하는 HTTP(Hypertext Transfer Protocol) 요청이며, 상기 객체 캐시 키는 상기 클라이언트 요청에서 GET 파라미터를 제외한 정보를 사용하여 생성되거나, 상기 클라이언트 요청에서 GET 파라미터 및 도메인 정보를 제외한 나머지를 사용하여 생성되고, 상기 속성 캐시 키는 상기 객체 캐시 키에 추가 정보를 포함시켜 생성되며, 상기 추가 정보는 GET/POST 파라미터나 HTTP 요청 헤더일 수 있다.
본 발명의 또 다른 특징에 따른 프록시 서버는, 웹 서버와 클라이언트 사이에서 컨텐츠를 제공하는 프록시 서버이며, 웹 서버로부터 제공되어 캐싱된 컨텐츠에 관련된 객체 정보--상기 객체 정보는 객체 캐시 키를 포함함--를 저장하는 객체 캐시 키 테이블, 웹 서버에 의하여 인증이 이루어진 클라이언트의 요청에 관련된 속성 정보--상기 속성 정보는 속성 캐시 키를 포함함--을 저장하는 속성 캐시 키 테이블을 포함하는 캐시 키 저장부; 클라이언트로부터 수신되는 HTTP(Hypertext Transfer Protocol) 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하는 캐시 키 생성부; 상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 존재하는지를 판단하고, 또한 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 존재하는지를 판단하는 키 존재 판단부; 및 상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있고, 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있는 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 데이터 제공부를 포함한다.
상기 객체 정보는 상기 웹 서버에 컨텐츠의 변경 여부를 확인한 시간인 객체 캐시 키 갱신 시간, 캐싱된 컨텐츠의 물리적 저장 장소인 캐시 경로를 더 포함하고, 상기 속성 정보는 상기 웹 서버에 의한 인증 확인 없이 서비스를 제공할 수 있는 시간인 속성 캐시 키 갱신 시간 그리고 대응하는 객체 캐시 키를 더 포함할 수 있다.
이외에도 상기 프록시 서버는, 상기 속성 캐시 키 테이블에 존재하는 속성 캐시 키의 유효 여부를 판단하고, 또한 객체 캐시 키 테이블에 존재하는 객체 캐시 키의 유효 여부를 판단하는 키 유효 판단부를 더 포함할 수 있으며, 이 경우, 상기 키 유효 판단부는 상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 속성 캐시 키에 대응하는 속성 캐시 키 갱신 시간을 경과하지 않은 경우에 상기 속성 캐시 키가 유효한 것으로 판단하고, 상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 객체 캐시 키에 대응하는 객체 캐시 키 갱신 시간을 경과하지 않은 경우에 상기 객체 캐시 키가 유효한 것으로 판단할 수 있다.
이외에도, 상기 프록시 서버는, 상기 속성 캐시 키가 속성 캐시 키 테이블에 존재하지 않거나, 속성 캐시 키 테이블에 존재하여도 속성 캐시 키가 유효하지 않은 경우에, 상기 HTTP 요청과 인증키를 상기 웹 서버로 전달하면서 인증을 요청하는 인증 요청부를 더 포함할 수 있다.
또한 상기 프록시 서버는, 상기 클라이언트로부터의 HTTP 요청을 웹 서버로 전달하면서 컨텐츠 제공을 요청하고, 제공되는 컨텐츠를 캐싱하는 캐싱 처리부를 더 포함할 수 있다. 상기 캐싱 처리부는 상기 객체 캐시 키가 객체 캐시 키 테이블에 존재하지 않거나, 객체 캐시 키 테이블에 존재하여도 객체 캐시 키가 유효하지 않은 경우에, 웹서버로 컨텐츠를 요청하고 제공되는 컨텐츠를 캐싱할 수 있다.
본 발명의 실시 예에 따르면, 정적 컨텐츠를 사설 컨텐츠 서비스 형태로 제공하는 경우에, 프록시 서버에 의하여 클라이언트 요청에 대한 인증 여부를 나타내는 속성을 별도로 관리하고 저장하여, 이미 인증이 이루어진 요청에 대해서는 웹서버로 별도로 인증을 요청하는 과정 없이 캐싱된 데이터를 제공할 수 있다. 그러므로 웹서버의 부하 절감이 가능하며, 프록시 서버를 통한 빠른 서비스 제공이 가능하다.
또한 프록시 서버에서 특정 서비스별로 인증을 수행하는 로직을 추가하지 않아도, 일반적인 개인화된 정적 콘텐츠에 대해서도 캐싱 서비스 제공이 가능하다. 또한 지정된 시간 동안 웹 서버로 인증을 요청하지 않으므로, HTML5(hypertext markup language 5)와 모바일 환경에서 많이 사용하는 부분요청(Range GET)으로 인한 웹서버로의 빈번한 인증 요청이 없어지며, 이에 따라 웹 서버의 처리 부하가 증가되는 것을 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 컨텐츠 서비스가 이루어지는 네트워크 환경을 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 인증키 인증 과정을 나타낸 예시도이다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 키 테이블의 구조를 나타낸 예시도이며, 도 4는 본 발명의 실시 예에 따른 속성 캐시 키 테이블의 구조를 나타낸 예시도이다.
도 5는 본 발명의 실시 예에 따른 컨텐츠 제공 방법의 흐름도이다.
도 6은 본 발명의 실시 예에 따른 프록시 서버의 구조를 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 인증키 인증 과정을 나타낸 예시도이다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 키 테이블의 구조를 나타낸 예시도이며, 도 4는 본 발명의 실시 예에 따른 속성 캐시 키 테이블의 구조를 나타낸 예시도이다.
도 5는 본 발명의 실시 예에 따른 컨텐츠 제공 방법의 흐름도이다.
도 6은 본 발명의 실시 예에 따른 프록시 서버의 구조를 나타낸 도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 도면을 참조하여 본 발명의 실시 예에 따른 컨텐츠 제공 방법 및 이를 이용한 프록시 서버에 대하여 설명한다.
도 1은 본 발명의 실시 예에 따른 컨텐츠 서비스가 이루어지는 네트워크 환경을 나타낸 도이다.
첨부한 도 1에서와 같이, 프록시 서버(100)는 컨텐츠를 제공하는 서버 즉, 웹 서버(200)와 클라이언트(300) 사이에 위치한다.
웹 서버(200)는 클라이언트로부터 컨텐츠 제공을 요구하는 요청에 대응하는 컨텐츠를 클라이언트(300)로 제공한다. 클라이언트로부터 컨텐츠 제공을 요구하는 요청은 HTTP(Hypertext Transfer Protocol) 요청으로 URL(uniform resource locator)에 대응하는 컨텐츠를 요청하는 것이다. 이러한 HTTP 요청은 URL 이외에 GET 파라미터/POST 파라미터나 HTTP 요청 헤더(Header)를 포함한다.
본 발명의 실시 예에서는 웹 서버(200)가 정적 컨텐츠 즉, 클라이언트로부터의 요청에서 기본 URL을 제외한 나머지 GET 파라미터나 HTTP 요청 헤더가 서로 달라도, 기본 URL에 대응하는 동일한 값으로 응답하는 컨텐츠를 제공하고, 이러한 정적 컨텐츠가 사설 컨텐츠 서비스 형태로 제공되는 경우를 토대로 한다. 웹 서버(200)는 요청된 컨텐츠를 제공하는 원본(origin) 웹 서버이다.
웹 서버(200)는 클라이언트(300)로부터 컨텐츠 전송을 요구하는 요청과 함께 전송되는 인증키를 이용하여 클라이언트(300)가 해당 컨텐츠에 대한 이용 권한이 있는지를 판단하고, 이용 권한이 있는 경우에 클라이언트(300)로 요청에 대응하는 컨텐츠를 응답한다. 인증키는 GET/POST 파라미터, HTTP 요청 헤더 중 적어도 하나 이상의 조합으로 이루어질 수 있으며, 클라이언트마다 사용하는 인증키는 다를 수 있으며, 인증키는 일정 시간이 지나면 무효화 될 수 있다.
인증키를 클라이언트에서 웹 서버로 HTTP헤더를 통해서 전달하는 방식으로는, 표준 HTTP 인증 헤더(Authorization header)를 이용하는 방식, 표준 쿠키 헤더(Cookie header)를 이용하는 방식, 사용자 정의 헤더인 X-Auth-Token 등을 이용하는 방식 등이 사용되고 있다. 여기서 사용자 정의 헤더란 X로 시작하는 헤더를 의미하며 X-Auth-Token은 오픈스택(OpenStack)의 스위프트 클라우드 스토리지(Swift Cloud Storage)에서 사용하고 있는 사용자 정의 헤더이다.
도 2는 본 발명의 실시 예에 따른 인증키 인증 과정을 나타낸 예시도이다. 도 2에서, 인증키는 X-Auth-Token 헤더를 이용한 경우를 나타낸다.
첨부한 도 2에 예시되어 있듯이, 프록시 서버(100)는 웹 서버(200)의 특성에 따라서 헤드(HEAD) 또는 1바이트 Range GET 요청을 이용해서 원본 컨텐츠의 Last-Modified 또는 Etag 를 비교해서 컨텐츠 변경 유무와 함께 인증키의 적법성 여부를 확인할 수 있다.
인증키 요청에 따라 도 2와 같이, 웹 서버로부터 제출된 인증키가 적합하면 " HTTP/1.1 200 OK", " HTTP/1.1 206 Partial Content"와 같은 200/206 응답을 받는다. 그러나 제출된 인증키에 대한 정보가 틀리거나 인증키 유효 기간이 종료된 경우에는 "401/403" 응답을 받게 된다.
그리고 웹 서버 응답에 포함된 Last-Modified 또는 Etag 헤더를 통하여 원 본 컨텐츠의 변경 유무를 확인할 수 있다. 예를 들어, Last-Modified: Mon, 06 May 2013 10:47:54 GMT를 통하여, 해당 컨텐츠가 마지막으로 변경된 시간을 알 수 있으며, ETag: "3b1832e-2-4dc0a6ed3ca80" 를 통하여 컨텐츠의 변경 여부를 알 수 있다.
한편 프록시 서버(100)는 웹 서버(200)와 클라이언트(300) 사이에서 데이터 중계 역할을 수행하며, 특히 본 발명의 실시 예에서, 정적 컨텐츠가 사설 컨텐츠 서비스 형태로 제공되는 경우에, 컨텐츠에 대한 캐싱을 수행하고 반복된 요청에 대해서 캐싱된 컨텐츠를 제공하여 보다 원본 웹서버의 부하를 절감하면서 빠른 서비스가 이루어지도록 한다.
이를 위하여, 본 발명의 실시 예에 따른 프록시 서버(100)는 컨텐츠에 대한 객체 정보 및 속성 정보를 각각 분리하여 관리하고, 이를 토대로 컨텐츠를 제공한다. 객체 정보는 객체 캐시 키(object cache key)와 이에 관련된 정보를 나타내며, 속성 정보는 속성 캐시 키(property cache key)와 이에 관련된 정보를 나타낸다.
객체 캐시 키는 캐싱된 컨텐츠 즉, 캐싱 데이터에 대하여 부여되는 것으로, 1개의 캐싱 데이터에 대하여 1개의 객체 캐시 키가 부여된다. 속성 캐시 키는 캐싱 데이터에 대한 속성을 나타내는 것으로, 특히, 속성 캐시 키에 대응하는 요청에 대한 인증 여부를 나타내다. 1개의 캐싱 데이터에 대하여 적어도 하나의 속성 캐시 키가 부여된다. 즉, 1개의 캐싱 데이터에 대하여 복수의 속성 캐시 키가 부여될 수 있다.
객체 캐시 키와 속성 캐시 키는 클라이언트로부터 입력되는 요청을 토대로 생성된다. 클라이언트의 요청 즉, HTTP 요청의 일부 또는 전체를 이용하여 캐시 키를 생성할 수 있다. 본 발명의 실시 예에서 객체 캐시 키는 클라이언트 요청 URL에서 GET 파라미터를 제외한 정보를 사용하여 생성될 수 있다. 또는 상황에 따라서는 클라이언트 요청에서 프로토콜, 도메인, 포트 정보도 추가적으로 생략하고 나머지를 사용하여 객체 캐시 키를 생성할 수도 있다. 예를 들어, "http://vod.domain.com:80/sample.mp4?id=1234"에서, 객체 캐시 키는 GET 파라미터를 제외한 "http://vod.domain.com:80/sample.mp4"이거나, GET 파라미터와 도메인 정보를 제외한 "/sample.mp4"일 수 있다. 프로토콜, 도메인, 포트정보를 제외하는 방법으로 도메인이 틀려도 경로만 동일하면 동일 콘텐츠로 인식할 수 있다.
속성 캐시 키는 객체 캐시 키에 특정한 GET/POST 파라미터나 특정한 HTTP 요청 헤더를 추가하여 생성할 수 있다.
GET 파라미터에 인증키를 포함해서 요청하는 예를 들어, "http://sample.com/sample1.mp3?id=123"의 요청에서, 객체 캐시 키는 "http://sample.com/sample1.mp3"일 수 있으며, 속성 캐시 키는 "http://sample.com/sample1.mp3?id=123"일 수 있다.
또한 "http://sample.com/sample1.mp3?id=456"의 요청에서, 객체 캐시 키는 "http://sample.com/sample1.mp3"일 수 있으며, 속성 캐시 키는 "http://sample.com/sample1.mp3?id=456"일 수 있다.
이러한 객체 캐시 키 및 속성 캐시 키 생성 방법은 위에 기술된 것에 한정되지 않는다.
본 발명의 실시 예에 따른 프록시 서버(100)는 위에 기술된 바와 같은 객체 캐시 키와 속성 캐시 키를 이용하여 객체 캐시 키 테이블과 속성 캐시 키 테이블을 구현한다.
객체 캐시 키 테이블은 객체 캐시 키, 캐시 경로, 객체 캐시 키 갱신 시간 정보를 포함한다. 여기서 캐시 경로는 실제 컨텐츠가 프록시 서버에 저장된 물리적 저장 경로를 나타내며, 객체 캐시 키 갱신 시간은 캐싱된 컨텐츠에 대해서 웹 서버(200)에 변경 여부에 대한 확인 없이 서비스가 가능한 마지막 시간을 나타낸다. 객체 캐시 키가 생성 또는 변경되는 시점에서 일정 시간을 추가한 시간을 객체 캐시 키 갱신 시간으로 사용할 수 있다. 캐싱된 컨텐츠의 변경 여부를 확인 없이 서비스하는 일정 시간은 프록시 서버에서 강제 지정하거나, 클라이언트와 웹 서버의 요청 또는 응답 헤더에 포함되는 캐시 제어(cache-Control) 값이나, 에이지(Age) 헤더의 값에 따라 설정될 수 있다.
프록시 서버(100)는 캐싱된 데이터에 대한 변경 여부를 확인하기 위하여, 웹서버에 대한 요청 헤더에 If-Modified-Since를 추가하는 방법과, HEAD나 1바이트 Range GET에 대한 요청에 대한 응답헤더에 포함된 “Last-Modified", "Etag". "Content-Length" 헤더를 이용할 수 있다. 웹서버에서 컨텐츠의 변경이 없으면, 현재 시간에 일정 시간이 추가된 시간을 객체 캐시 키 갱신 시간으로 사용한다. 만약 웹서버에 있는 컨텐츠가 갱신되었으면, 프록시 서버는 현재의 컨텐츠를 삭제하고 새로 갱신된 컨텐츠를 받아서 캐싱을 하며, 현재 시간에 일정 시간이 추가된 시간을 객체 캐시 키 갱신 시간으로 사용한다.
속성 캐시 키 테이블은 속성 캐시 키, 객체 캐시 키, 속성 캐시 키 갱신 시간 정보를 포함한다. 속성 캐시 키 갱신 시간 정보는 해당 속성 캐시 키에 대해서 웹 서버에 인증 없이 서비스가 가능한 마지막 시간을 나타낸다. 인증 캐시키를 추가 또는 갱신하는 시점에서 일정 시간을 추가한 시간을 속성 캐시 키 갱신 시간으로 사용할 수 있다. 웹 서버에 인증 여부에 대한 재확인 없이 서비스하는 일정 시간은 강제 지정해서 사용하며 일반적으로 서비스에 따라서 수초에서 수분 정도를 사용할 수 있다.
웹 서버(200)에 인증 확인을 할 때, 속성 캐시 키 갱신 시간으로부터 요청 시간(여기서 요청 시간은 클라이언트로부터 요청이 입력된 시간으로 클라이언트의 요청 시간이라고도 명명될 수 있다.)이 경과되지 않은 경우에는 해당 속성 캐시 키가 유효한 것으로 처리하며, 속성 캐시 키 갱신 시간으로부터 요청 시간이 경과된 경우에는 해당 속성 캐시 키가 유효하지 않은 것으로 처리될 수 있다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 키 테이블의 구조를 나타낸 예시도이며, 도 4는 본 발명의 실시 예에 따른 속성 캐시 키 테이블의 구조를 나타낸 예시도이다.
도 3 및 도 4는 클라이언트로부터 요청 " http://sample.com/sample1.mp4AUTH_9823rh_90ahg_aaaa ", " http://sample.com/ sample2.mp4AUTH_9823rh_90ahg_bbbb","http://sample.com/ sample3.mp4AUTH_9823rh _90ahg_cccc", "http://sample.com/sample3.mp4AUTH_9823rh_90ahg_dddd" 등이 입력되는 경우에, 객체 캐시 키 테이블과 속성 캐시 키 테이블에 저장되는 정보를 나타낸 예시도이다.
캐시 경로는 해시(hash) 함수를 이용하여 컨텐츠의 파일명을 변경하여 획득되는 값을 캐시 경로로 사용할 수 있는데, "/var/cache/00/01/0000000000001"와 같은 값을 가질 수 있다.
본 발명의 실시 예에 따른 프록시 서버는 위에 기술된 바와 같이, 컨텐츠를 요구하는 클라이언트 요청이 입력되면, 클라이언트 요청의 일부 정보를 사용하여 객체 캐시 키와 속성 캐시 키를 각각 생성하고, 객체 캐시 키를 이용하여 해당 컨텐츠가 캐싱 데이터인지를 판단하고, 속성 캐시 키를 이용하여 해당 요청에 대한 인증이 유효한지 여부를 판단한다. 그리고 판단 결과를 토대로, 요구된 컨텐츠가 캐싱 데이터이고 이미 이전에 요청에 대한 인증이 이루어졌으며 아직 속성 캐시키 갱신 시간을 초과하지 않아 유효한 경우에는, 웹서버(200)로 추가적인 인증을 요청하지 않고 캐싱 데이터 즉, 이전에 캐싱되어 있던 컨텐츠를 클라이언트(300)로 제공한다.
도 5는 본 발명의 실시 예에 따른 컨텐츠 제공 방법의 흐름도이다.
프록시 서버(100)는 도 5에 도시되어 있듯이, 클라이언트(300)로부터 컨텐츠 제공을 요구하는 요청 즉, HTTTP 요청을 수신한다(S100). 수신된 HTTP 요청은 컨텐츠에 대응하는 URL 정보와 인증키를 포함한다. 예를 들어, " GET http://sample.com/sample.mp4?key=1234 "와 같은 형태일 수 있다.
프록시 서버(100)는 수신된 HTTP 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하고(S110), 획득한 속성 캐시키가 속성 캐시 키 테이블에 존재하는지를 판단한다(S120).
판단 결과, 클라이언트의 HTTP 요청으로부터 획득한 속성 캐시 키가 속성 캐시 키 테이블에 존재하는 경우에는, 해당 속성 캐시 키의 유효 여부를 판단한다(S130). 여기서 속성 캐시 키 테이블로부터 HTTP 요청으로부터 획득한 속성 캐시 키에 대응하는 속성 캐시 키 갱신 시간을 획득하고, 속성 캐시 키 갱신 시간이 클라이언트의 요청 시간보다 경과된 경우에는 해당 속성 캐시 키가 유효하지 않은 것으로 판단하고, 속성 캐시 키 갱신 시간이 클라이언트의 요청 시간보다 경과되지 않은 경우에는 해당 속성 캐시 키가 유효한 것으로 판단할 수 있다.
속성 캐시 키가 유효한 경우에는 클라이언트의 HTTP 요청으로부터 획득한 객체 캐시 키가 객체 캐시 키 테이블에 존재하는지를 판단한다(S140). 판단 결과, 클라이언트의 HTTP 요청으로부터 획득한 객체 캐시 키가 객체 캐시 키 테이블에 존재하는 경우에는, 해당 객체 캐시 키의 유효 여부를 판단한다(S150). 여기서 객체 캐시 키 테이블로부터 HTTP 요청으로부터 획득한 객체 캐시 키에 대응하는 객체 캐시 키 갱신 시간을 획득하고, 객체 캐시 키 갱신 시간이 클라이언트 요청 시간보다 경과된 경우에는 해당 객체 캐시 키가 유효하지 않은 것으로 판단하고, 객체 캐시 키 갱신 시간이 클라이언트 요청 시간보다 경과되지 않은 경우에는 해당 객체 캐시 키가 유효한 것으로 판단할 수 있다
프록시 서버(100)는 객체 캐시 키가 유효하여 캐싱된 데이터에 갱신이 요구되지 않는 경우에는, 웹 서버(200)로 HTTP 요청에 따른 인증 및 컨텐츠를 요청하는 과정 없이, 바로 캐싱된 데이터 즉, HTTP 요청에 대응하는 컨텐츠를 클라이언트(300)로 제공한다(S160).
한편, 단계(S140)에서, 프록시 서버(110)는 클라이언트의 HTTP 요청으로부터 획득한 속성 캐시 키가 속성 캐시 키 테이블에 존재하면서 유효하지만 객체 캐시 키가 객체 캐시 키 테이블에 존재하지 않는 경우, 또는 단계(S150)에서, 객체 캐시 키가 객체 캐시 키 테이블에 존재하지만 객체 캐시 키가 무효한 경우에는, 이미 해당 HTTP 요청에 대하여 인증이 이루어졌지만 컨텐츠 갱신이 필요한 상태로 판단하여, 웹 서버(200)로 HTTP 요청을 전달하면서 컨텐츠 제공을 요청하고, 웹 서버(200)로부터 제공되는 컨텐츠를 캐싱(S170)하고, 캐싱된 컨텐츠를 클라이언트(300)로 제공한다. 이러한 경우에 프록시 서버(100)는 웹서버에 대한 요청헤더에 If-Modified-Since 추가해서 이용하는 방법과, HEAD나 1바이트 Range GET에 대한 요청에 대한 응답헤더에 포함된 “Last-Modified", "Etag", "Content-Length" 헤더를 이용해서 웬서버와 캐시서버 컨텐츠의 변경여부를 확인해서 변경사항이 없으면, 컨텐츠에 대한 전송 없이 현재 시간에 일정시간을 추가해서 객체 캐시 키 갱신 시간으로 사용할 수 있다. 컨텐츠가 변경이 있으면 프록시 서버의 컨텐츠는 삭제하고 웹서버에서 컨텐츠를 새로 받으며, 현재 시간에 일정 시간을 추가해서 객체 캐시 키 갱신 시간으로 사용한다.
한편, 단계(S120)에서 클라이언트의 HTTP 요청으로부터 획득한 속성 캐시 키가 속성 캐시 키 테이블에 존재하지 않는 경우나, 또는 단계(S130)에서 속성 캐시 키가 속성 캐시 키 테이블에는 존재하지만 유효하지 않은 경우에는, 인증이 필요한 상태로 판단하여 웹서버(200)에 HTTP 요청과 인증키를 전달하면서 인증을 요청한다(S180). 이러한 인증 요청에 따라 웹서버(200)로부터 인증 응답(HTTP 200 또는 206 응답)을 받고, 인증이 이루어진 경우에는 클라이언트의 HTTP 요청으로부터 획득한 속성 캐시 키를 새로운 키로 하여 속성 캐시 키 테이블에 추가하고, 현재 시간에 지정된 일정 시간을 추가한 시간을 속성 캐시 키 갱신 시간으로 기록한다. 그리고 이후, 프록시 서버(100)는 객체 캐시 키 존재 여부 및 객체 캐시 키 유효 여부를 판단하는 과정(S140~S170)을 거쳐서 위에 기술된 바와 같이, 캐싱된 데이터를 클라이언트(300)로 제공한다.
그러나 단계(S180)에서의 인증 요청에 대응하여 인증이 이루어지지 않은 경우(HTTP 200 또는 206 응답이 아닌 경우)에, 프록시 서버(100)는 클라이언트(300)로 웹서버의 HTTP응답을 그대로 전달함으로써 컨텐츠 제공이 불가함을 통보한다(S190, S200). 이 경우, 프록시 서버(100)는 인증되지 않은 클라이언트의 HTTP 요청으로부터 획득한 속성 캐시 키를 속성 캐시 키 테이블에 추가하지 않을 수 있다.
이러한 과정을 통하여, 사설 컨텐츠 서비스 형태로 정적 컨텐츠가 제공되는 경우에, 프록시 서버에 의하여 클라이언트 요청에 대한 인증 여부를 나타내는 속성을 별도로 관리하고 저장하여, 이미 인증이 이루어진 요청에 대해서는 웹서버로 별도로 인증을 요청하는 과정 없이 캐싱된 데이터를 제공할 수 있다. 그러므로 웹서버의 부하 절감이 가능하며, 프록시 서버를 통한 빠른 서비스 제공이 가능하다. 이러한 방법은 온라인 교육, 영화 및 방송 컨텐츠와 같이 유료 미디어 컨텐츠를 서비스하는 경우에도 적용될 수 있다.
도 6은 본 발명의 실시 예에 따른 프록시 서버의 구조를 나타낸 도이다.
첨부한 도 6에서와 같이, 본 발명의 실시 예에 따른 프록시 서버(100)는 캐시 키 생성부(110), 캐시 키 저장부(120), 키 존재 판단부(130), 키 유효 판단부(140)를 포함하며, 인증 요청부(150) 및 그리고 캐싱 처리부(160), 데이터 제공부(170)를 더 포함한다.
캐시 키 생성부(110)는 클라이언트로부터 수신되는 HTTP 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득한다.
캐시 키 저장부(120)는 회득한 객체 캐시 키와 속성 캐시 키를 저장하며, 이를 위하여, 위에 기술된 바와 같은 형태로 이루어지는 캐시 키 테이블(121)과 속성 캐시 키 테이블(122)를 포함한다.
키 존재 판단부(130)는 클라이언트의 HTTP 요청으로부터 획득한 속성 캐시 키가 속성 캐시 키 테이블에 존재하는지를 판단하고, 또한 는 클라이언트의 HTTP 요청으로부터 획득한 객체 캐시 키가 객체 캐시 키 테이블에 존재하는지를 판단한다.
키 유효 판단부(140)는 속성 캐시 키 테이블에 존재하는 속성 캐시 키의 유효 여부를 판단하고, 또한 객체 캐시 키 테이블에 존재하는 객체 캐시 키의 유효 여부를 판단한다.
인증 요청부(150)는 속성 캐시 키가 속성 캐시 키 테이블에 존재하지 않거나, 속성 캐시 키 테이블에 존재하여도 속성 캐시 키가 유효하지 않은 경우에, HTTP 요청과 인증키를 웹 서버(200)로 전달하면서 인증을 요청한다. 그리고 인증된 속성 캐싱 키, 속성 캐시 키 갱신 시간을 해당하는 객체 속성 키에 대응시켜 속성 캐시 키 테이블(122)에 저장 및 관리한다.
캐싱 처리부(160)는 HTTP 요청을 웹 서버(200)로 전달하면서 컨텐츠 제공을 요청하고, 제공되는 컨텐츠를 캐싱한다. 그리고 캐싱된 컨텐츠에 대한 객체 속성 키, 캐싱 경로, 객체 속성 키 갱신 시간을 객체 캐시 키 테이블(121)에 저장 및 관리한다. 캐싱 처리부(160)는 객체 캐시 키가 객체 캐시 키 테이블에 존재하지 않거나, 객체 캐시 키 테이블에 존재하여도 객체 캐시 키가 유효하지 않는 경우에, 웹서버로 컨텐츠를 요청하고 제공되는 컨텐츠를 캐싱할 수 있다.
데이터 제공부(170)는 클라이언트의 요청에 대응하는 컨텐츠를 클라이언트로 제공한다. 획득한 속성 캐시 키가 속성 캐시 키 테이블(122)에 저장되어 있고, 획득한 객체 캐시 키가 객체 캐시 키 테이블(121)에 저장되어 있는 경우에, 요청에 대응하는 캐싱된 컨텐츠를 클라이언트로 제공한다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
Claims (18)
- 웹 서버와 클라이언트 사이에서 프록시 서버가 컨텐츠를 제공하는 방법에서,
상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계;
상기 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하는 단계;
상기 획득한 속성 캐시 키를 토대로 상기 요청에 대한 웹 서버의 인증 여부를 판단하는 단계;
상기 획득한 객체 캐시 키를 토대로 상기 요청에 대응하는 컨텐츠의 캐싱 여부를 판단하는 단계; 및
상기 판단 결과들을 토대로 상기 요청에 대응하는 컨텐츠를 상기 클라이언트로 제공하는 단계
를 포함하고,
상기 요청은 GET 파라미터와 도메인 정보를 포함하는 HTTP(Hypertext Transfer Protocol) 요청이며,
상기 객체 캐시 키는 상기 요청에서 GET 파라미터를 제외한 정보를 사용하여 생성되거나, 상기 요청에서 GET 파라미터 및 도메인 정보를 제외한 나머지를 사용하여 생성되고,
상기 속성 캐시 키는 상기 객체 캐시 키에 추가 정보를 포함시켜 생성되며, 상기 추가 정보는 GET/POST 파라미터나 HTTP 요청 헤더인, 컨텐츠 제공 방법. - 제1항에 있어서
상기 클라이언트로 제공하는 단계는
상기 요청에 대한 웹 서버의 인증이 이전에 이루어졌던 것으로 판단되고, 상기 요청에 대응하는 컨텐츠가 상기 프록시 서버에 캐싱되어 있는 것으로 판단되는 경우, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계
를 포함하는, 컨텐츠 제공 방법. - 제2항에 있어서
상기 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계는
상기 클라이언트로부터 상기 요청이 수신된 시간인 요청 시간이 상기 웹 서버의 인증이 마지막으로 이루어진 시간으로부터 설정 시간 이내인 경우, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는, 컨텐츠 제공 방법. - 제1항에 있어서
상기 클라이언트로 제공하는 단계는
상기 요청에 대한 웹 서버의 인증이 이전에 이루어지지 않았던 경우에는, 상기 요청과 이에 해당하는 인증키를 상기 웹 서버로 전달하면서 인증을 요청하는 단계; 및
상기 웹서버로부터 상기 요청에 대한 인증 확인에 따른 응답이 수신되고, 상기 요청에 대응하는 컨텐츠가 상기 프록시 서버에 캐싱되어 있는 것으로 판단되는 경우, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계
를 포함하는, 컨텐츠 제공 방법. - 제1항에 있어서
상기 클라이언트로 제공하는 단계는
상기 요청에 대한 웹 서버의 인증이 이전에 이루어졌지만, 상기 요청에 대응하는 컨텐츠가 상기 프록시 서버에 캐싱되어 있지 않은 경우에, 상기 요청을 상기 웹 서버로 전달하면서 컨텐츠 제공을 요청하는 단계;
상기 요청에 따라 제공되는 컨테츠를 수신하고 캐싱하는 단계; 및
상기 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계
를 포함하는, 컨텐츠 제공 방법. - 웹 서버와 클라이언트 사이에서 프록시 서버가 컨텐츠를 제공하는 방법에서,
상기 프록시 서버가, 웹 서버로부터 제공되는 컨텐츠를 캐싱하고 캐싱된 컨텐츠에 관련된 객체 정보--상기 객체 정보는 객체 캐시 키를 포함함--를 저장하는 객체 캐시 키 테이블을 생성하는 단계;
상기 프록시 서버가, 웹 서버에 의하여 인증이 이루어진 클라이언트의 요청에 관련된 속성 정보--상기 속성 정보는 속성 캐시 키를 포함함--를 저장하는 속성 캐시 키 테이블을 생성하는 단계;
상기 프록시 서버가, 상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계;
상기 프록시 서버가, 상기 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하고, 획득한 객체 캐시 키와 속성 캐시 키가 각각 당하는 객체 캐시 키 테이블과 속성 캐시 키 테이블에 저장되어 있는지를 판단하는 단계; 및
상기 프록시 서버가, 상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있고, 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있는 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계
를 포함하는, 컨텐츠 제공 방법. - 제6항에 있어서,
상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있지 않은 경우,
상기 요청과 이에 해당하는 인증키를 상기 웹 서버로 전달하면서 인증을 요청하는 단계;
상기 웹서버로부터 상기 요청에 대한 인증 확인에 따른 응답이 수신되는 경우, 상기 획득한 속성 캐시 키를 상기 속성 캐시 키 테이블에 저장하는 단계; 및
상기 요청에 대한 인증 확인에 따른 응답이 수신되고, 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있는 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계
를 더 포함하는, 컨텐츠 제공 방법. - 제7항에 있어서,
상기 속성 캐시 키 테이블에 상기 획득한 속성 캐시 키에 대응시켜, 상기 웹 서버에 의한 인증 확인을 한 시간에 지정된 일정 시간을 추가해서 속성 캐시 키 갱신 시간으로 저장하는 단계를 더 포함하는, 컨텐츠 제공 방법. - 제8항에 있어서,
상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계는,
상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 속성 캐시 키에 대응하는 속성 캐시 키 갱신 시간을 경과하지 않은 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는, 컨텐츠 제공 방법. - 제6항에 있어서,
상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있지 않은 경우,
상기 요청을 상기 웹 서버로 전달하면서 컨텐츠 제공을 요청하는 단계;
상기 요청에 따라 제공되는 컨테츠를 수신하고 캐싱하는 단계;
상기 획득한 객체 캐시 키를 상기 객체 캐시 키 테이블에 저장하는 단계; 및
상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있는 경우, 상기 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계
를 더 포함하는, 컨텐츠 제공 방법. - 제10항에 있어서,
상기 객체 캐시 키 테이블에 상기 획득한 객체 캐시 키에 대응시켜, 상기 웹 서버에 컨텐츠의 변경 여부를 확인한 시간인 객체 캐시 키 갱신 시간을 추가하여 저장하여 단계를 더 포함하는, 컨텐츠 제공 방법. - 제11항에 있어서,
상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 단계는,
상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 객체 캐시 키에 대응하는 객체 캐시 키 갱신 시간을 경과하지 않은 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는, 컨텐츠 제공 방법. - 제6항에 있어서
상기 요청은 GET 파라미터와 도메인 정보를 포함하는 HTTP(Hypertext Transfer Protocol) 요청이며,
상기 객체 캐시 키는 상기 요청에서 GET 파라미터를 제외한 정보를 사용하여 생성되거나, 상기 요청에서 GET 파라미터 및 도메인 정보를 제외한 나머지를 사용하여 생성되고,
상기 속성 캐시 키는 상기 객체 캐시 키에 추가 정보를 포함시켜 생성되며, 상기 추가 정보는 GET/POST 파라미터나 HTTP 요청 헤더인, 컨텐츠 제공 방법. - 웹 서버와 클라이언트 사이에서 컨텐츠를 제공하는 프록시 서버에서,
웹 서버로부터 제공되어 캐싱된 컨텐츠에 관련된 객체 정보--상기 객체 정보는 객체 캐시 키를 포함함--를 저장하는 객체 캐시 키 테이블, 웹 서버에 의하여 인증이 이루어진 클라이언트의 요청에 관련된 속성 정보--상기 속성 정보는 속성 캐시 키를 포함함--를 저장하는 속성 캐시 키 테이블을 포함하는 캐시 키 저장부;
클라이언트로부터 수신되는 HTTP(Hypertext Transfer Protocol) 요청으로부터 객체 캐시 키와 속성 캐시 키를 획득하는 캐시 키 생성부;
상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 존재하는지를 판단하고, 또한 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 존재하는지를 판단하는 키 존재 판단부; 및
상기 획득한 속성 캐시 키가 상기 속성 캐시 키 테이블에 저장되어 있고, 상기 획득한 객체 캐시 키가 상기 객체 캐시 키 테이블에 저장되어 있는 경우에, 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 데이터 제공부
를 포함하는, 프록시 서버. - 제14항에 있어서
상기 객체 정보는 상기 웹 서버에 컨텐츠의 변경 여부를 확인한 시간인 객체 캐시 키 갱신 시간, 캐싱된 컨텐츠의 물리적 저장 장소인 캐시 경로를 더 포함하고, 상기 속성 정보는 상기 웹 서버에 의한 인증 확인 없이 서비스를 제공할 수 있는 시간인 속성 캐시 키 갱신 시간 그리고 대응하는 객체 캐시 키를 더 포함하는, 프록시 서버. - 제15항에 있어서
상기 속성 캐시 키 테이블에 존재하는 속성 캐시 키의 유효 여부를 판단하고, 또한 객체 캐시 키 테이블에 존재하는 객체 캐시 키의 유효 여부를 판단하는 키 유효 판단부를 더 포함하고,
상기 키 유효 판단부는 상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 속성 캐시 키에 대응하는 속성 캐시 키 갱신 시간을 경과하지 않은 경우에 상기 속성 캐시 키가 유효한 것으로 판단하고,
상기 클라이언트로부터 요청이 수신된 시간인 요청 시간이 상기 획득한 객체 캐시 키에 대응하는 객체 캐시 키 갱신 시간을 경과하지 않은 경우에 상기 객체 캐시 키가 유효한 것으로 판단하는, 프록시 서버. - 제16항에 있어서
상기 속성 캐시 키가 속성 캐시 키 테이블에 존재하지 않거나, 속성 캐시 키 테이블에 존재하여도 속성 캐시 키가 유효하지 않은 경우에, 상기 HTTP 요청과 인증키를 상기 웹 서버로 전달하면서 인증을 요청하는 인증 요청부를 더 포함하는, 프록시 서버. - 제16항에 있어서
상기 클라이언트로부터의 HTTP 요청을 웹 서버로 전달하면서 컨텐츠 제공을 요청하고, 제공되는 컨텐츠를 캐싱하는 캐싱 처리부
를 더 포함하고,
상기 캐싱 처리부는 상기 객체 캐시 키가 객체 캐시 키 테이블에 존재하지 않거나, 객체 캐시 키 테이블에 존재하여도 객체 캐시 키가 유효하지 않은 경우에, 웹서버로 컨텐츠를 요청하고 제공되는 컨텐츠를 캐싱하는, 프록시 서버.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130098105A KR101490516B1 (ko) | 2013-08-19 | 2013-08-19 | 객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130098105A KR101490516B1 (ko) | 2013-08-19 | 2013-08-19 | 객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101490516B1 true KR101490516B1 (ko) | 2015-02-05 |
Family
ID=52590386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130098105A KR101490516B1 (ko) | 2013-08-19 | 2013-08-19 | 객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101490516B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595586A (zh) * | 2018-04-19 | 2018-09-28 | 杭州迪普科技股份有限公司 | 一种搜索关键字的确定方法及装置 |
KR20190143520A (ko) | 2018-06-07 | 2019-12-31 | 한밭대학교 산학협력단 | 생체정보 인식 기반의 데이터 최적화를 위한 오브젝트 스토리지 클라우드 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005539315A (ja) * | 2002-09-16 | 2005-12-22 | ネットワーク・アプライアンス・インコーポレイテッド | プロキシ・キャッシュに関する装置および方法 |
JP2006506738A (ja) * | 2002-11-19 | 2006-02-23 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | トランスコード可能なキャッシングプロキシおよびその方法 |
-
2013
- 2013-08-19 KR KR20130098105A patent/KR101490516B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005539315A (ja) * | 2002-09-16 | 2005-12-22 | ネットワーク・アプライアンス・インコーポレイテッド | プロキシ・キャッシュに関する装置および方法 |
JP2006506738A (ja) * | 2002-11-19 | 2006-02-23 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | トランスコード可能なキャッシングプロキシおよびその方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595586A (zh) * | 2018-04-19 | 2018-09-28 | 杭州迪普科技股份有限公司 | 一种搜索关键字的确定方法及装置 |
KR20190143520A (ko) | 2018-06-07 | 2019-12-31 | 한밭대학교 산학협력단 | 생체정보 인식 기반의 데이터 최적화를 위한 오브젝트 스토리지 클라우드 시스템 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12034824B2 (en) | Processing DNS queries to identify pre-processing information | |
US9590946B2 (en) | Managing content delivery network service providers | |
US10623408B1 (en) | Context sensitive object management | |
US8321502B2 (en) | Method for optimizing a web content proxy server and devices thereof | |
US8904009B1 (en) | Dynamic content delivery | |
US8819109B1 (en) | Data network communication using identifiers mappable to resource locators | |
US7590704B2 (en) | Systems and methods for processing dynamic content | |
US8447831B1 (en) | Incentive driven content delivery | |
US8805950B1 (en) | Client web cache | |
US10397360B2 (en) | Systems and methods for caching HTTP POST requests and responses | |
CN107251528B (zh) | 用于提供源自服务提供商网络内的数据的方法和装置 | |
JP6588477B2 (ja) | リモート情報クエリの方法及びサーバ | |
CN106537864A (zh) | 一种访问资源的方法及装置 | |
JP2011013707A (ja) | Webページの中継装置 | |
US11019036B2 (en) | Method for privacy protection | |
KR101490516B1 (ko) | 객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버 | |
US11075922B2 (en) | Decentralized method of tracking user login status | |
CN110768974B (zh) | 一种单页应用实时视图权限的控制方法 | |
WO2018203223A1 (en) | Conditional removal of advertisements from web content | |
KR101565353B1 (ko) | 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버 | |
US10855723B2 (en) | Enforcing a secure transport protocol with dynamically updated stored data | |
KR101815145B1 (ko) | 크로스 도메인간 인증서 공유방법 | |
KR101499809B1 (ko) | 컨텐츠 관리 서버, 컨텐츠 관리 방법 및 컨텐츠 관리 시스템 | |
WO2018112685A1 (zh) | 一种高并发超文本传输协议请求的处理方法、装置及*** | |
GB2459019A (en) | A validation-based http caching portlet markup and refresh method for server-side portlets embedded in a web 2.0 portal environment. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190130 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20200130 Year of fee payment: 6 |