JScript

Programação & Desenvolvimento


Você não está conectado. Conecte-se ou registre-se

New: Avatar in widget Last topics!

Ir para baixo  Mensagem [Página 1 de 1]

1New: Avatar in widget Last topics! Empty New: Avatar in widget Last topics! Qua 04 Mar 2015, 5:21 pm

JScript

JScript
Administradores
Administradores

Olá pessoal!

Eu estive analisando o HTML atual e como já sabemos, nós temos os avatares dos últimos postadores de forma nativa vindo da própria plataforma, ok, já não é mais novidade...

Mas sempre que precisamos mostrar o avatar de um membro, recorremos ao Ajax() e com isso corremos o risco do temível Request Limit, a única forma de se evitar até então era utilizando funções storage mas isso só vale enquanto estivermos na mesma página, ao trocar de página e retornar, o Ajax() é novamente executado!

Para contornar isso, nós podemos verificar se o avatar do membro consta nas categorias do fórum, com isso ganhamos em velocidade e em média uma taxa de 0% em uso do Ajax().
Magnífico não acham?

Reflitam (...)

Agora se entenderam o que eu expliquei acima, analisem o código abaixo e testem, mas lembrem-se:
"Só está com os seletores para a versão PUNBB, fica o exercício ai para vocês o tonarem compatível com as outras versões."

Código:

/***
 * Avatar in Last topics widget!
 * More fast and safe, by JScript - 2013/07/13
 */
jQuery(function() {
    var oSearch = jQuery('#main-content .main-content td.tcr a.gensmall[href^="/u"]'), // Location to look for avatars! In this case, looking in the categories.
        oTarget = jQuery('#right .main-content > a[href^="/t"]'), // Here returns the object for the title of the widget "last topics"...
        ilen = oTarget.length, // Size of array...
        index = 0; // Here we accelerate the count of "for"!

    for (index; index < ilen; index++) {
        var oThis = jQuery(oTarget[index]), //
            oUserInf = oThis.next().next(),
            sHref = oUserInf.attr('href'),
            sTitle = oUserInf.text();

        oThis.before('<a href="' + sHref + '" title="' + sTitle + '" class="lastpost-avatar"><img src="http://r26.imgfast.net/users/2617/31/90/74/avatars/1-40.png" alt="no_photo" class="avt-wid" /></a>');
        var oImg = oThis.prev().find('.avt-wid'),
 // Here calls the function to search for the avatar!
 sSrc = AvatarSearch(oSearch, sHref);

        if (sSrc.length) { // if exists: Very, very, very fast!!!
            oImg.attr('src', sSrc);
        } else {
            sSrc = sessionStorage.getItem(sHref); // Relative fast...
            if (sSrc) {
                oImg.attr('src', sSrc);
            } else {
                jQuery.get(sHref, function(data) { // Slow and dangerous!!!
                    var image = jquery('#profile-advanced-right .main-content img:first', data).attr('src');
                    oImg.attr('src', image);
                    sessionStorage.setItem(sHref, image);
                });
            }
        }
    }
});

function AvatarSearch(oObject, oTarget) {
    var ilen = oObject.length,
        index = 0;

    for (index; index < ilen; index++) {
        var oThis = jQuery(oObject[index]);
        if (oThis.attr('href') == oTarget) {
            var sImg = oThis.closest('td.tcr').find('.lastpost-avatar img').attr('src');
            if (sImg.length) return sImg;
        }
    }
    return '';
}
O código já foi adicionado aqui e em seguida eu medi a quantidade de requisições:
Baixou de forma espetacular!!!

E o melhor de tudo é que vocês podem implementar a função AvatarSearch() que eu fiz em vários outros códigos que fazem requisições para ter o avatar, imaginem...

Aguardo os "feedbacks" de todos,

JS

http://autoitbrasil.com

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos