1. CDN이란 무엇인가요?
CDN의 역할에 대해 말하자면 8년간의 기차표 구매 경험을 활용하면 다음과 같습니다.
8년 전에는 기차표 판매 지점도 없었고 12306.cn은 더욱 말할 수 없었습니다. 에 대한. 당시 기차표는 기차역 매표소에서만 구입할 수 있었고, 제가 살았던 작은 카운티에서는 기차를 이용할 수 없었기 때문에 도시의 기차역에서 기차표를 구입해야 했고, 시간이 많이 걸렸습니다. 군에서 시내까지 왕복 4시간 운전은 인생낭비입니다. 나중에는 나아졌는데, 작은 카운티 마을에 기차표 판매소가 생겼고, 판매소에서 직접 기차를 구입할 수 있어 도시 사람들이 더 이상 티켓을 사기 위해 한 지점에 줄을 설 필요가 없습니다. .
CDN은 각 카운티에 배포된 기차표 판매 지점으로 이해될 수 있습니다. 사용자가 웹사이트를 탐색할 때 CDN은 사용자의 요청에 응답하기 위해 사용자와 가장 가까운 CDN 엣지 노드를 선택하여 Hainan Mobile 사용자의 요청을 수행합니다. 베이징 텔레콤 컴퓨터실에 있는 서버까지 끝까지 가지 않습니다(원본 스테이션이 베이징 텔레콤 컴퓨터실에 배치되어 있다고 가정).
CDN의 장점은 분명합니다. (1) CDN 노드는 운영자 간 및 지역 간 액세스 문제를 해결하고 액세스 지연이 크게 줄어듭니다. (2) 대부분의 요청이 CDN 에지 노드에서 완료되고 CDN이 재생됩니다. 전환 역할을 수행하여 원본 사이트의 부하를 완화합니다.
2. 캐시란 무엇인가요?
이 문서에서는 CDN의 고급 아키텍처를 자세히 다루지 않으며 CDN이 글로벌 트래픽 예약 전략을 구현하는 방법에 대해서도 논의하지 않습니다. 이 문서에서는 CDN 설치 후 데이터가 캐시되는 방식에 중점을 둡니다. 캐싱은 시간에 대한 공간 거래의 유비쿼터스 예입니다. 추가 공간을 사용하면 더 빠른 속도를 얻을 수 있습니다.
먼저 CDN에 연결된 웹사이트가 없을 때 사용자의 브라우저가 서버와 어떻게 상호 작용하는지 살펴보겠습니다.
사용자가 웹사이트를 탐색할 때 브라우저는 웹사이트에 있는 이미지 또는 기타 파일의 복사본을 로컬로 저장할 수 있습니다. 따라서 사용자가 웹사이트를 다시 방문할 때 브라우저는 더 이상 모든 파일을 다운로드할 필요가 없습니다. 다운로드 볼륨을 줄이면 페이지 로딩 속도가 빨라집니다.
CDN 계층이 중간에 추가되면 사용자 브라우저와 서버 간의 상호 작용은 다음과 같습니다.
클라이언트 브라우저는 먼저 로컬 캐시가 만료되었는지 확인하고 만료되면 요청을 시작합니다. CDN 엣지 노드는 사용자가 요청한 데이터의 캐시가 만료되었는지 여부를 감지합니다. 만료되지 않은 경우, 이때 데이터가 만료되면 완료된 http 요청이 종료됩니다. 그런 다음 CDN은 최신 데이터를 가져오기 위해 원본 요청을 원본 사이트로 다시 보내야 합니다. CDN의 일반적인 토폴로지 다이어그램은 다음과 같습니다.
CDN이 존재하는 시나리오에서 데이터는 클라이언트(브라우저) 캐싱과 CDN 에지 노드 캐싱의 두 단계를 거쳤음을 알 수 있습니다. 자세한 분석
2. 클라이언트(브라우저) 캐싱
클라이언트 캐싱의 단점
클라이언트 캐싱은 서버 요청을 줄이고 파일의 반복 로드를 방지하며 사용자 경험을 크게 향상시킵니다. 그러나 웹 사이트가 업데이트되면(예: CSS, JS 및 이미지 파일이 교체됨) 이전 버전의 파일이 여전히 브라우저에 로컬로 저장되어 예측할 수 없는 결과가 발생합니다.
옛날에는 페이지가 로드되면 페이지의 요소 위치가 흩어지고 버튼 클릭이 실패했습니다. 프런트 엔드 GG는 습관적으로 "캐시가 지워졌습니까?"라고 묻고 나서 Ctrl+를 누르곤 했습니다. F5, 모든 것이 정상입니다. 그러나 때로는 브라우저 주소 표시줄에서 Enter 키를 누르거나 F5 키를 눌러 새로 고치는 경우에도 문제가 해결되지 않습니다. 이러한 세 가지 작업 방법이 브라우저의 캐시 전략 새로 고침 방식을 결정한다는 사실을 알고 계십니까?
브라우저는 로컬 파일을 사용할지 아니면 서버의 새 파일을 사용할지 어떻게 결정하나요? 여기에는 여러 가지 판단 방법이 있습니다.
브라우저 캐시 정책
Expires
Expires:Sat, 24 Jan 2015 20:30:54 GMT
Expires가 http 응답 메시지에 설정되어 있는 경우 Expires가 연결을 만료하기 전에 이를 방지합니다. 섬기는 사람. 이때 브라우저는 브라우저에 요청을 보낼 필요가 없으며 보유하고 있는 자료가 만료되었는지 여부만 확인하면 됩니다. 서버에 부담을 줄 필요가 전혀 없습니다.
Cache-control: max-age
Expires 방식은 매우 좋지만 매번 정확한 시간을 계산해야 합니다. max-age 태그를 사용하면 만료 시간을 더 쉽게 처리할 수 있습니다. 이 정보는 일주일 동안만 사용할 수 있다고만 말하면 충분합니다.
Max-age는 초 단위로 측정됩니다. 예:
Cache-Control:max-age=645672
지정된 페이지는 645672초(7.47일) 후에 만료됩니다.
Last-Modified
현재 파일 버전을 브라우저에 알리기 위해 서버는 마지막 수정 시간이 포함된 태그를 보냅니다. 예:
Last-Modified:Tue, 06 Jan 2015 08:26:32 GMT
다음과 같이 찾아보세요. 브라우저는 이후 요청에서 다음 규칙에 따라 확인합니다.
1. 브라우저: jquery.min.js 파일이 필요합니다. 화요일인 경우 2015년 1월 6일 08:26:32 GMT 이후에 수정된 경우 저에게 보내주세요.
2. 서버: (파일 수정 시간 확인)
3. 서버: 아, 이 파일은 그 이후로 수정되지 않았습니다. 이미 최신 버전이 있습니다.
4. 브라우저: 좋습니다. 그러면 사용자에게 표시하겠습니다.
이 경우 서버는 304 응답 헤더만 반환하므로 응답 데이터의 양이 줄어들고 응답 속도가 향상됩니다. 304 응답 관련 내용은 다음을 참고하세요.
http://www.cnblogs.com/ziyunfei/archive/2012/11/17/2772729.html
아래 그림은 F5를 눌러 새로고침한 후 304 응답 헤더를 반환하는 페이지를 보여줍니다. 페이지.
ETag
일반적으로 파일을 수정 시간별로 비교하는 것이 좋습니다. 그러나 서버 시계가 틀리거나, 서버 시계가 수정되거나, 서버 시간이 DST 이후 시간에 맞춰 업데이트되지 않는 등 일부 특수한 상황에서는 수정된 시간을 통해 파일 버전을 비교하는 문제가 발생할 수 있습니다.
ETag를 사용하면 이 문제를 해결할 수 있습니다. ETag는 파일의 고유 식별자입니다. 해시나 지문과 마찬가지로 각 파일에는 파일이 변경될 때마다 변경되는 개별 서명이 있습니다.
서버는 ETag 태그를 반환합니다:
ETag:”39001d-1762a-50bf790757e00”
다음 액세스 순서는 다음과 같습니다:
- 브라우저: jquery.min.js 파일이 필요합니다. "39001d-1762a-50bf790757e00" 문자열과 일치하지 않는 것이 있나요?
- 서버: (ETag 확인...)
- 서버: 안녕하세요, 제가 가지고 있는 버전도 "39001d-1762a-50bf790757e00"입니다. 당신은 이미 최신 버전입니다
- 브라우저: 좋습니다. 그러면 로컬 캐시를 사용할 수 있습니다.
Last-modified와 마찬가지로 ETag는 파일 버전 비교 문제를 해결합니다. 단지 ETag 수준이 Last-Modified보다 높을 뿐입니다.
추가 태그 캐시 태그는 작동을 멈추지 않지만 때로는 이미 캐시된 항목을 어느 정도 제어해야 할 때도 있습니다.
l 캐시 제어: 공개는 캐시된 버전을 프록시 서버나 기타 중간 서버에서 인식할 수 있음을 의미합니다.
l 캐시 제어: 비공개는 이 파일이 사용자마다 다르다는 것을 의미합니다. 사용자 자신의 브라우저에서만 캐싱이 가능하며, 공용 프록시 서버에서는 캐싱을 허용하지 않습니다.
l 캐시 제어: no-cache는 파일의 내용이 캐시되지 않아야 함을 의미합니다. 이는 동일한 URL에 대해 해당 콘텐츠가 변경되므로 검색이나 페이지 넘김 결과에 매우 유용합니다.
- 브라우저 캐시 새로 고침
- 주소 표시줄에 URL을 입력하고 Enter 키를 누르거나 이동 버튼을 클릭하세요
브라우저는 가장 적은 요청으로 웹 페이지의 데이터를 가져오고 브라우저는 모든 콘텐츠에 대해 로컬 캐시를 직접 사용합니다. 만료되지 않았으므로 브라우저에 대한 요청이 줄어듭니다. 따라서 Expires 및 max-age 태그는 이 방법에만 유효합니다.
- F5 또는 브라우저 새로 고침 버튼을 누르세요.
브라우저는 필요한 캐시 협상을 요청에 첨부하지만 브라우저는 로컬 캐시를 직접 사용할 수 없습니다. Last-Modified 및 ETag를 유효하게 만들 수는 있지만 그렇지 않습니다. 만료에는 유효하지 않습니다.
- Ctrl+F5를 누르거나 Ctrl을 누르고 새로고침 버튼을 클릭하세요.
이 방법은 강제로 새로고침하고 캐시를 사용하지 않고 항상 새 요청을 시작하는 것입니다.
- CDN 캐시
- CDN 캐싱의 단점
- CDN 캐싱 전략
CDN 엣지 노드 캐싱 전략은 서비스 제공업체마다 다르지만 일반적으로 http 표준 프로토콜을 따르고 http 응답 헤더의 Cache-control: max-age 필드를 통해 CDN 엣지 노드 데이터 캐싱 시간을 설정합니다.
클라이언트가 CDN 노드에서 데이터를 요청하면 CDN 노드는 캐시된 데이터가 만료되었는지 여부를 확인합니다. 캐시된 데이터가 만료되지 않은 경우 캐시된 데이터가 클라이언트에 직접 반환되고 그렇지 않으면 CDN 노드가 전송됩니다. 원본 사이트로의 반환 요청 요청, 원본 사이트에서 최신 데이터 가져오기, 로컬 캐시 업데이트 및 최신 데이터를 클라이언트에 반환
CDN 서비스 제공업체는 일반적으로 파일 접미사 및 디렉터리를 기반으로 CDN 캐시 시간을 지정하는 다양한 차원을 제공하여 사용자에게 보다 정교한 캐시 관리를 제공합니다.
CDN 캐시 시간은 "반환율"에 직접적인 영향을 미칩니다. CDN 캐시 시간이 짧으면 CDN 에지 노드의 데이터가 자주 실패하여 원본으로 자주 반환되어 원본 사이트의 부하가 증가하고 CDN 캐시 시간이 너무 길면 액세스 지연도 늘어납니다. , 데이터 업데이트 속도가 느려지는 문제가 발생합니다. 특정 데이터 캐시 시간 관리를 수행하려면 개발자가 특정 비즈니스를 추가해야 합니다.
CDN 캐시 새로 고침
CDN 에지 노드는 개발자에게 투명합니다. 브라우저 Ctrl+F5를 강제로 새로 고쳐 브라우저의 로컬 캐시를 무효화하는 것과 비교하여 개발자는 "캐시 새로 고침" 인터페이스를 사용하여 목적을 달성할 수 있습니다. CDN 에지 노드 캐시를 지웁니다. 이러한 방식으로 개발자는 "캐시 새로 고침" 기능을 사용하여 데이터를 업데이트한 후 CDN 노드의 데이터 캐시를 강제로 만료시켜 클라이언트가 액세스할 때 최신 데이터를 가져올 수 있도록 할 수 있습니다.
위 내용은 CDN 캐싱에 대해 이야기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
