日月刀
初来乍到
初来乍到
  • 发帖数1
  • 铜币177两
  • 威望2点
  • 贡献0点
  • 注册日期2007-09-19
  • 最后登录2017-06-08
阅读:1276回复:0

[经验分享]关于phpwind9.x系列头像上传成功但因缓存未及时显示的问题的解决方法

楼主#
更多 发布于:2017-05-12 09:55
系统提示:关于phpwind产品的学习与交流已经迁移到阿里云论坛,请访问这里:https://bbs.aliyun.com/fourms.php?m=bbs&cateid=403
问题:
1、采用了CDN缓存加速,导致头像上传成功不能及时更新;
2、本地服务器采用了缓存加速,导致头像上传成功不能及时更新。
头像上传与后台客户端是否通信成功没有必然的联系。如果遇到这样的情况,请你直接修改

src/library/Pw.php 文件。查找代码:

    public static function getAvatar($uid, $size = 'middle') {
        $file = $uid . (in_array($size, array('middle', 'small')) ? '_' . $size : '') . '.jpg';
        $prefix = Wekit::C('site', 'avatarUrl');

        // 是否本地存储
        if (parse_url($prefix, PHP_URL_HOST) == $_SERVER['HTTP_HOST']) {
            return (!file_exists(PUBLIC_PATH.'/windid/attachment/avatar/'. self::getUserDir($uid). '/'. $file)
                     && $uid !== 0) ? self::getAvatar(0, $size) :
                    PUBLIC_URL . '/windid/attachment/avatar/'. self::getUserDir($uid) . '/' . $file;
        } else {
            return $prefix . '/avatar/' . self::getUserDir($uid) . '/' . $file;
        }
        }

这段代码,将这个方法的一整段修改为:
   public static function getAvatar($uid, $size = 'middle') {
        $file = $uid . (in_array($size, array('middle', 'small')) ? '_' . $size : '') . '.jpg';
        $prefix = Wekit::C('site', 'avatarUrl');

        // 是否本地存储
        if (parse_url($prefix, PHP_URL_HOST) == $_SERVER['HTTP_HOST']) {
            return (!file_exists(PUBLIC_PATH.'/windid/attachment/avatar/'. self::getUserDir($uid). '/'. $file)
                     && $uid !== 0) ? self::getAvatar(0, $size) :
                    PUBLIC_URL . '/windid/attachment/avatar/'. self::getUserDir($uid) . '/' . $file.'?ver='.time();
        } else {
            return $prefix . '/avatar/' . self::getUserDir($uid) . '/' . $file.'?ver='.time();
        }
        }

   上传覆盖即可。

最新喜欢:

cixinetcixine...
游客

返回顶部