백엔드 개발 PHP 튜토리얼 Gravatar 아바타를 로컬로 캐싱하는 방법 및 WordPress의 관련 최적화에 대한 팁

Gravatar 아바타를 로컬로 캐싱하는 방법 및 WordPress의 관련 최적화에 대한 팁

May 16, 2016 pm 08:02 PM
wordpress 최적화 화신

Gravatar의 글로벌 아바타를 캐싱하는 목적은 웹사이트 오픈 속도를 높이는 것입니다. Gravatar 공식 웹사이트의 서버가 해외에 있고, 엄청난 GFW로 인해 국내 오픈 속도가 매우 느린 경우가 많습니다. 방법은 willin에서 왔는데, 그의 웹사이트를 더 이상 열 수 없는 것 같습니다

Gravata 전역 아바타를 로컬에 캐시

캐싱 방법

1. 캐시 디렉토리를 생성합니다
워드프레스 루트 디렉토리에 아바타라는 폴더를 생성하고 해당 폴더의 권한을 0755로 설정합니다(0755가 안되면 0777을 시도해보세요).

2. 기본 아바타 설정
적당한 크기(32*32이면 충분)의 기본 아바타를 준비하고 이름을 "default.jpg"로 지정하여 아바타 폴더에 넣습니다.

3. 캐시 코드 추가
다음 코드를 테마의 function.php 파일에 복사하세요

function my_avatar($avatar) {
$tmp = strpos($avatar, 'http');
$g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
$tmp = strpos($g, 'avatar/') + 7;
$f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
$w = get_bloginfo('wpurl');
$e = ABSPATH .'avatar/'. $f .'.jpg';
$t = 1209600; //設定14天, 單位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if (filesize($e) < 500) copy($w.&#39;/avatar/default.jpg&#39;, $e);
return $avatar;
}
add_filter(&#39;get_avatar&#39;, &#39;my_avatar&#39;);
로그인 후 복사

이메일을 통해 Gravatar 아바타가 있습니다
사용자가 Gravatar를 설정했는지 여부도 알아야 하는 경우가 많습니다. 예를 들어 사용자가 Gravatar 아바타를 설정하지 않으면 로컬 기본 아바타가 직접 표시됩니다. 또는 이미 아바타를 설정한 사용자를 방해하지 않고 사용자가 Gravatar 아바타를 설정하지 않았다는 알림을 받게 됩니다. 오늘 공유된 코드는 이메일 주소를 통해 사용자가 Gravatar 아바타를 가지고 있는지 확인할 수 있습니다:

function validate_gravatar($email) {
 $hash = md5(strtolower(trim($email)));
 $uri = &#39;http://www.gravatar.com/avatar/&#39; . $hash . &#39;?d=404&#39;;
 $headers = @get_headers($uri);
 if (!preg_match("|200|", $headers[0])) {
 $has_valid_avatar = FALSE;
 } else {
 $has_valid_avatar = TRUE;
 }
 return $has_valid_avatar;
}
로그인 후 복사

Gravatar 글로벌 범용 아바타 캐시 최적화

최적화된 코드는 사용자가 Gravatar 아바타를 설정하지 않은 경우 기본 아바타가 여러 파일에 반복적으로 캐시되어 발생하는 리소스 낭비 및 반복 연결 문제를 피할 수 있습니다. 최적화된 코드는 다음과 같습니다

function my_avatar( $email, $size = &#39;32&#39;, $default = &#39;&#39;, $alt = &#39;&#39;) {
 $f = md5( strtolower( $email ) );
 // 以下代码将头像缓存到wp-content目录下
 $a = get_bloginfo(&#39;template_url&#39;) . &#39;/avatar/&#39;. $f . $size . &#39;.png&#39;;
 $e = get_template_directory() . &#39;/avatar/&#39; . $f . $size . &#39;.png&#39;;
 $d = get_template_directory() . &#39;/avatar/&#39; . $f . &#39;-d.png&#39;;
 // 如果要将头像缓存到当前主题目录下,请将3-5行代码改成:
 // $a = get_bloginfo(&#39;template_url&#39;) . &#39;/avatar/&#39;. $f . $size . &#39;.png&#39;;
 // $e = get_template_directory() . &#39;/avatar/&#39; . $f . $size . &#39;.png&#39;;
 // $d = get_template_directory() . &#39;/avatar/&#39; . $f . &#39;-d.png&#39;;

if($default==&#39;&#39;)
  $default = get_bloginfo(&#39;wpurl&#39;).&#39;avatar/default.jpg&#39;;
 
 $t = 2592000; // 缓存有效期30天, 这里单位:秒
 if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
  if ( !is_file($d) || (time() - filemtime($d)) > $t ) {
   // 验证是否有头像
   $uri = &#39;http://www.gravatar.com/avatar/&#39; . $f . &#39;?d=404&#39;;
   $headers = @get_headers($uri);
   if (!preg_match("|200|", $headers[0])) {
    // 没有头像,则新建一个空白文件作为标记
    $handle = fopen($d, &#39;w&#39;);
    fclose($handle);
    $a = $default;
   }
   else {
    // 有头像且不存在则更新
    $r = get_option(&#39;avatar_rating&#39;);
    $g = &#39;http://www.gravatar.com/avatar/&#39;. $f. &#39;?s=&#39;. $size. &#39;&r=&#39; . $r;
    copy($g, $e);
   }
  }
  else {
   $a = $default;
  }
 }
 
 $avatar = "";
 return apply_filters(&#39;my_avatar&#39;, $avatar, $email, $size, $default, $alt);
}
로그인 후 복사

이 방법을 사용하려면 테마의 모든 파일에서 get_avatar 함수를 my_avatar로 바꿔야 합니다.
그리고

get_avatar( $comment,
로그인 후 복사

형식인 경우에는

my_avatar( $comment->comment_author_email
로그인 후 복사

으로 변경해야 합니다. my_avatar 함수는 이메일을 통해서만 보낼 수 있으므로 사용자의 아바타를 검색하려면 위의 경우 첫 번째 매개변수를 이메일 주소로 변경해야 합니다.

더 많은 관련 튜토리얼을 보려면 PHP 프로그래밍 입문부터 숙달까지 전체 비디오 튜토리얼을 확인하세요.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 대 Flutter: 모바일 개발을 위한 최고의 선택 PHP 대 Flutter: 모바일 개발을 위한 최고의 선택 May 06, 2024 pm 10:45 PM

PHP와 Flutter는 모바일 개발에 널리 사용되는 기술입니다. Flutter는 크로스 플랫폼 기능, 성능 및 사용자 인터페이스가 뛰어나며 고성능, 크로스 플랫폼 및 맞춤형 UI가 필요한 애플리케이션에 적합합니다. PHP는 성능이 낮고 크로스 플랫폼이 아닌 서버 측 애플리케이션에 적합합니다.

WordPress 기사는 어느 폴더에 있나요? WordPress 기사는 어느 폴더에 있나요? Apr 16, 2024 am 10:29 AM

WordPress 게시물은 /wp-content/uploads 폴더에 저장됩니다. 이 폴더는 하위 폴더를 사용하여 연도, 월, 기사 ID별로 정리된 기사를 포함하여 다양한 유형의 업로드를 분류합니다. 기사 파일은 일반 텍스트 형식(.txt)으로 저장되며 파일 이름에는 일반적으로 ID와 제목이 포함됩니다.

워드프레스 템플릿 파일은 어디에 있나요? 워드프레스 템플릿 파일은 어디에 있나요? Apr 16, 2024 am 11:00 AM

WordPress 템플릿 파일은 /wp-content/themes/[테마 이름]/ 디렉터리에 있습니다. 헤더(header.php), 바닥글(footer.php), 기본 템플릿(index.php), 단일 기사(single.php), 페이지(page.php)를 포함하여 웹사이트의 모양과 기능을 결정하는 데 사용됩니다. , 아카이브(archive.php), 카테고리(category.php), 태그(tag.php), 검색(search.php) 및 404 오류 페이지(404.php). 이러한 파일을 편집하고 수정하면 WordPress 웹사이트의 모양을 사용자 정의할 수 있습니다.

어떤 WordPress 버전이 안정적인가요? 어떤 WordPress 버전이 안정적인가요? Apr 16, 2024 am 10:54 AM

가장 안정적인 WordPress 버전은 최신 보안 패치, 성능 향상, 새로운 기능 및 개선 사항이 포함된 최신 버전입니다. 최신 버전으로 업데이트하려면 WordPress 대시보드에 로그인하고 업데이트 페이지로 이동하여 지금 업데이트를 클릭하세요.

워드프레스를 등록해야 하나요? 워드프레스를 등록해야 하나요? Apr 16, 2024 pm 12:07 PM

WordPress에는 등록이 필요합니다. 우리나라의 '인터넷 보안 관리 대책'에 따르면, 국내에서 인터넷 정보 서비스를 제공하는 웹사이트는 워드프레스(WordPress)를 포함해 해당 지자체 인터넷 정보 관리국에 등록해야 합니다. 등록 프로세스에는 서비스 공급자 선택, 정보 준비, 신청서 제출, 검토 및 게시, 등록 번호 획득 등의 단계가 포함됩니다. 제출의 이점에는 법적 준수, 신뢰성 향상, 액세스 요구 사항 충족, 정상적인 액세스 보장 등이 포함됩니다. 제출 정보는 사실이고 유효해야 하며, 제출 후 정기적으로 업데이트되어야 합니다.

C++ 프로그램 최적화: 시간 복잡도 감소 기술 C++ 프로그램 최적화: 시간 복잡도 감소 기술 Jun 01, 2024 am 11:19 AM

시간 복잡도는 입력 크기를 기준으로 알고리즘의 실행 시간을 측정합니다. C++ 프로그램의 시간 복잡성을 줄이는 팁에는 데이터 저장 및 관리를 최적화하기 위한 적절한 컨테이너(예: 벡터, 목록) 선택이 포함됩니다. Quick Sort와 같은 효율적인 알고리즘을 활용하여 계산 시간을 단축합니다. 여러 작업을 제거하여 이중 계산을 줄입니다. 불필요한 계산을 피하려면 조건부 분기를 사용하세요. 이진 검색과 같은 더 빠른 알고리즘을 사용하여 선형 검색을 최적화합니다.

WordPress 기사 데이터베이스란 무엇입니까? WordPress 기사 데이터베이스란 무엇입니까? Apr 16, 2024 am 11:12 AM

WordPress는 기사 데이터베이스로 MySQL을 사용하며 주요 기능에는 기사, 댓글, 사용자 및 웹사이트 구성 데이터 저장이 포함됩니다. 데이터 테이블에는 wp_posts(기사), wp_postmeta(메타데이터), wp_comments(댓글), wp_commentmeta(댓글 메타데이터), wp_users(사용자)가 포함됩니다. 데이터베이스는 phpMyAdmin이나 명령줄을 통해 접근 및 관리할 수 있으며, 데이터 손실을 방지하려면 데이터베이스를 정기적으로 백업하는 것이 중요합니다.

WordPress에서 테마 템플릿을 삭제하는 방법 WordPress에서 테마 템플릿을 삭제하는 방법 Apr 16, 2024 am 02:36 AM

WordPress 테마 템플릿을 삭제하려면 먼저 대시보드에 로그인한 다음 모양 > 테마 편집기로 이동하여 삭제할 테마를 선택하고 삭제를 클릭한 후 확인하고 선택적으로 새 테마를 활성화하세요.

See all articles