WordPress.org

Make WordPress Core

Ticket #11420: 11420_cache_search_results.diff

File 11420_cache_search_results.diff, 1.3 KB (added by batmoo, 4 years ago)

Caches AJAX results to avoid repeated calls for the same query

  • wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js

     
    187187                this.element = element; 
    188188                this.ul = element.children('ul'); 
    189189                this.waiting = element.find('.river-waiting'); 
     190                this.cache = {} 
    190191                 
    191192                this.change( search ); 
    192193                 
     
    198199                        var self = this, 
    199200                                delay = this.query.page == 1 ? 0 : wpLink.minRiverAJAXDuration, 
    200201                                response = wpLink.delayedCallback( function( results, params ) { 
     202                                        // Cache the results 
     203                                        if( ! self.cache[self._search] ) { 
     204                                                self.cache[self._search] = { 
     205                                                        results: results, 
     206                                                        params: params 
     207                                                } 
     208                                        } 
    201209                                        self.process( results, params ); 
    202210                                        if ( callback ) 
    203211                                                callback( results, params ); 
    204212                                }, delay ); 
    205213                         
    206                         this.query.ajax( response ); 
     214                        // If the search results are already cached, we can avoid an AJAX call 
     215                        if( this.cache[this._search] ) 
     216                                response( this.cache[this._search]['results'], this.cache[this._search]['params'] ); 
     217                        else  
     218                                this.query.ajax( response ); 
    207219                }, 
    208220                change: function( search ) { 
    209221                        if ( this.query && this._search == search )