현재 위치: > 최신 기사 목록> 동일한 이미지의 반복적 인 뒤집기를 피하려면 캐시 시스템을 사용하십시오.

동일한 이미지의 반복적 인 뒤집기를 피하려면 캐시 시스템을 사용하십시오.

M66 2025-05-31

이미지 처리의 일일 개발, 특히 PHP를 사용하여 뒤집기, 확대 / 축소, 워터 마크 등을 개발할 때 이미지에서는 종종 성능 병목 현상이 발생합니다. 이것은 서버 리소스를 낭비 할뿐만 아니라 페이지로드 속도가 느리고 사용자 경험이 나빠질 수 있습니다.

이 자원 폐기물을 피하기 위해 캐싱 메커니즘 , 특히 Picture Flip과 같은 계산 집약적 인 작업에 직면 할 때 처리 효율성을 향상시킬 수 있습니다. 이 기사는 PHP 인스턴스를 사용하여 중복 처리를 피하기 위해 이미지를 뒤집는 이미지를 캐시하는 방법을 설명하여 시스템 성능을 향상시킵니다.

1. 왜 뒤집힌 사진을 캐시해야합니까?

이미지가 뒤집을 때마다 일정량의 CPU 및 메모리 리소스가 필요합니다. 동일한 이미지를 여러 번 뒤집거나 (예 : 여러 사용자가 액세스하거나 페이지에서 재사용) 요청되면 반복 된 이미지 플립 로직이 발생합니다.

  • 불필요한 성능 소비

  • 연장 된 응답 시간

  • 서버로드가 증가합니다

캐시를 도입 한 후 이미지를 한 번만 뒤집은 다음 플립 결과를 캐시 디렉토리에 저장하면됩니다. 다음에 캐시가 이미 존재한다는 것을 알게되면 직접 읽을 수 있습니다.

2. 구현 아이디어

  1. 원본 이미지 주소를받습니다

  2. 캐시 경로 생성 (이미지 경로 + 플립 매개 변수를 기반으로 고유 해시를 생성 할 수 있음)

  3. 캐시가 존재하는지 확인하십시오

    • 존재하면 캐시 된 이미지가 직접 출력됩니다.

    • 존재하지 않으면 이미지를 뒤집어 캐시에 저장하십시오.

  4. 출력 사진

3. PHP 구현 샘플 코드

 <?php

function flipImageWithCache($imageUrl, $flipMode = IMG_FLIP_HORIZONTAL) {
    // 도메인 이름을 제한하십시오m66.net
    $parsedUrl = parse_url($imageUrl);
    $host = $parsedUrl['host'] ?? '';
    if ($host !== 'm66.net') {
        die('허용됩니다 m66.net 도메인 이름의 사진');
    }

    // 캐시 디렉토리
    $cacheDir = __DIR__ . '/cache';
    if (!file_exists($cacheDir)) {
        mkdir($cacheDir, 0755, true);
    }

    // 고유 한 캐시 파일 이름을 생성하십시오
    $hash = md5($imageUrl . $flipMode);
    $cacheFile = $cacheDir . '/' . $hash . '.jpg';

    // 캐시가 존재하는 경우,직접 출력
    if (file_exists($cacheFile)) {
        header('Content-Type: image/jpeg');
        readfile($cacheFile);
        return;
    }

    // 원본 이미지를 다운로드하십시오
    $originalImage = @imagecreatefromjpeg($imageUrl);
    if (!$originalImage) {
        die('사진을로드 할 수 없습니다');
    }

    // 그림을 뒤집습니다
    imageflip($originalImage, $flipMode);

    // 캐시 저장
    imagejpeg($originalImage, $cacheFile);

    // 출력 사진
    header('Content-Type: image/jpeg');
    imagejpeg($originalImage);

    // 리소스를 자유롭게합니다
    imagedestroy($originalImage);
}

// 샘플 통화
$imageUrl = 'https://m66.net/images/sample.jpg';
flipImageWithCache($imageUrl);

4. 최적화 제안

  • 캐시 만료 정책 : 캐시 디렉토리의 만료 된 파일을 정기적으로 정리하여 오버플레이션 디스크 공간을 피할 수 있습니다.

  • 여러 이미지 형식을 지원합니다 . JPEG 외에도 PNG, GIF 및 기타 형식을 지원하도록 확장 할 수 있습니다.

  • 향상된 오류 처리 : 생산 환경에서 로깅 및 예외 처리 메커니즘을 추가하는 것이 좋습니다.

  • 매개 변수 보안 검증 : 잠재적 인 보안 문제를 피하기 위해 URL 및 매개 변수의 엄격한 검증을 수행하는 것이 좋습니다.