WordPress.org

Make WordPress Core

Ticket #11420: 11420_cache_search_results.diff

File 11420_cache_search_results.diff, 1.3 KB (added by batmoo, 8 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 )