允许在DataTables中的`fnServerData`中进行服务器端缓存

时间:2013-08-05 05:27:22

标签: jquery ajax datatables

默认情况下,DataTables中的Ajax调用通过在URL上添加伪造字段来避免缓存,例如http://yoursite.com/api/?_348522852542'。我想禁用它。似乎ajax函数调用fnServerData,其定义类似于此......

    "fnServerData": function ( sUrl, aoData, fnCallback, oSettings ) {
        oSettings.jqXHR = $.ajax( {
            "url":  sUrl,
            ....
            "cache": false,
            ....
            });
      };

我希望"cache"的值为true而不是false。我错过了什么吗?为什么这样硬编码?是进行此更改以在本地或通过提交补丁来编辑源的最佳方法吗?

2 个答案:

答案 0 :(得分:1)

您可以覆盖fnServerData回调:http://datatables.net/usage/callbacks#fnServerData

答案 1 :(得分:0)

这实际上帮助我解决了我的问题,当已经缓存的数据(在redis中)被datatables(1.10.10)重新缓存时,这是我的代码(它也会刷新数据,因为它的缓存速度非常快):

<script type="text/javascript" charset="utf-8">
        $(document).ready(function() {
            var table = $('#issues-table').DataTable( {
                processing : true,
                ajax: {
                        url: '/jira',
                        dataSrc: 'issues',
                        cache: true
                },
                order: [ 0, 'desc' ],
                fnRowCallback: function( nRow, aData, iDisplayIndex ) {
                    $('td:eq(0)', nRow).html('<a href="http://jira.com/browse/' + aData[0] + '" target="_blank">' +
                        aData[0] + '</a>');
                    return nRow;
                },
            } );
            setInterval( function () {
                table.ajax.reload( null, false ); // user paging is not reset on reload
            }, 30000 );
        } );
</script>