gravatar 头像缓存,加快浏览速度-Linux主机可用

大概一个月之前, 万戈 同学出品了一个文章[Wordpress 2.7+主题 gravatar 头像缓存],当时我看了,觉得很不错.可是,当我想用这个方法的时候,失败了.究其原因--我使用的主机是windows.所以与之无缘,作罢.

现在还了Linux主机,我就想起了缓存头像这个事情,的确是可以加快速度的,相信很多人都知道,gravatar 头像服务器是国外的,加载慢了很多了,要是在自己的服务器上面的话,闭着眼睛都知道速度会加快.而且,我很多时候打开博客的时候,就加载这个头像,都要等个几秒(也可能和网速慢有关系)

我是菜鸟,只有跟着步骤来走,打开万戈的部落格,一步一步来,先别卖关子,把文章重点给摘来再说.下面文章摘自万戈博客,链接见文章开头.

1、去作者主页下载该组件,解包,上传。路径随意,我放在 /gravatar 目录下。

2、gravatar 目录内应该有两个文件夹: cache 和 profile;三个文件: index.php, .htaccess, mysql.sql



3、赋予 cache 文件夹 755 权限: chmod a+w 。

4、本地新建一个 php 文件,写入以下内容,文件名 avatar.php,上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。

<?php
$config['default'] = 'http://domain.com/default-gravatar.png';//无头像时返回的默认头像路径
$config['rating'] = 'PG';//gravatar的内容级别
$config['size'] = 64;//头像尺寸
?>

5、编辑 .htaccess 文件,默认 RewriteRule . index.php [L] ,请依照你的实际放置目录修改,比如我的是 RewriteRule . /gravatar/index.php [L]

6、修改 wp-includes/pluggable.php:

大概在1523行处有一个

if ( !function_exists( 'get_avatar' ) ) :

…………………

…………………

endif;

(大概1611行结束)

(注意,Wordpress 2.9版本的,这个行所在的数字又改动,目前我看到的是1545-1633)

替换成以下的代码,注意网址要修改为自己的:

if ( !function_exists( 'get_avatar' ) ) :
/**
 * Retrieve the avatar for a user who provided a user ID or email address.
 *
 * @since 2.5
 * @param int|string|object $id_or_email A user ID,  email address, or comment object
 * @param int $size Size of the avatar image
 * @param string $default URL to a default image to use if no avatar is available
 * @param string $alt Alternate text to use in image tag. Defaults to blank
 * @return string <img> tag for the user's avatar
*/
function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
 if ( ! get_option('show_avatars') )
 return false;

 if ( false === $alt)
 $safe_alt = '';
 else
 $safe_alt = esc_attr( $alt );

 if ( !is_numeric($size) )
 $size = '96';

 $email = '';
 if ( is_numeric($id_or_email) ) {
 $id = (int) $id_or_email;
 $user = get_userdata($id);
 if ( $user )
 $email = $user->user_email;
 } elseif ( is_object($id_or_email) ) {
 if ( isset($id_or_email->comment_type) && '' != $id_or_email->comment_type && 'comment' != $id_or_email->comment_type )
 return false; // No avatar for pingbacks or trackbacks

 if ( !empty($id_or_email->user_id) ) {
 $id = (int) $id_or_email->user_id;
 $user = get_userdata($id);
 if ( $user)
 $email = $user->user_email;
 } elseif ( !empty($id_or_email->comment_author_email) ) {
 $email = $id_or_email->comment_author_email;
 }
 } else {
 $email = $id_or_email;
 }
 $host = 'http://itlu.org';  //注意这里要修改为你的博客的地址

 if ( !empty($email) ) {
 $out = "$host/gravatar/cache/avatar/";
 $out .= md5( strtolower( $email ) );

 $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
 } else {
 $avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
 }

 return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
}
endif;

全部结束后,刷新有头像的地方,看看是不是缓存下来了?右键--属性.

感谢 万戈 同学的文章.[Wordpress 2.7+主题 gravatar 头像缓存]

查看 wordpress windows linux gravatar的相关文章

转载本站原创文章请注明:文章转自 灰狼IT路,链接: https://itlu.org/articles/1218.html

已有 10 条评论

  1. 博客服务器是国外的,缓存了,也还是在国外,呵呵,没用。

  2. @一米
    我是国内的,会加快速度

  3. 我的也在国外 还不如不缓存

  4. 哈,谢谢转载,其实还有更好的缓存方法,不用改WP原文件,只需要主题的functions.php里回调就可以了,以后升级也没烦恼了

  5. 山东LED显示屏网(www.rt37.cn)前来看看博主,有时间回访,呵呵,博客弄的不错。

  6. @万戈
    方法在哪里

  7. @万戈
    对啊,方法在那里?

  8. @万戈
    强烈要求方法!!!

    @Blinux
    同问.

    @漠天
    同问+1

  9. 俺也用上了

  10. @Firm
    效果怎么样?

添加新评论