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 = 'https://itlu.net'; //注意这里要修改为你的博客的地址
if ( !empty($email) ) {
$out = "$host/gravatar/cache/avatar/";
$out .= md5( strtolower( $email ) );
$avatar = "<img alt='{$safe_alt}' src='/index/thumb.png' data-original='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
$avatar = "<img alt='{$safe_alt}' src='/index/thumb.png' data-original='{$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 头像缓存]
转载本站原创文章请注明:文章转自 挨踢路,链接: https://itlu.net/articles/1218.html
博客服务器是国外的,缓存了,也还是在国外,呵呵,没用。
@一米
我是国内的,会加快速度
我的也在国外 还不如不缓存
哈,谢谢转载,其实还有更好的缓存方法,不用改WP原文件,只需要主题的functions.php里回调就可以了,以后升级也没烦恼了
山东LED显示屏网(www.rt37.cn)前来看看博主,有时间回访,呵呵,博客弄的不错。
@万戈
方法在哪里
@万戈
对啊,方法在那里?
@万戈
强烈要求方法!!!
@Blinux
同问.
@漠天
同问+1
俺也用上了
@Firm
效果怎么样?