---
title: "Server-Side Processing Issues with Caching in wpDataTables: How to Fix Them"
description: "Understand why server-side processing tables break with caching and how to resolve it in wpDataTables."
url: https://help.wpdatatables.com/en/articles/35-server-side-processing-issues-with-caching-in-wpdatatables-how-to-fix-them
collection: "Technical issues"
updated: 2026-11-02
language: en
---

# Server-Side Processing Issues with Caching in wpDataTables: How to Fix Them

Understand why server-side processing tables break with caching and how to resolve it in wpDataTables.

### ❓ **What’s the Issue?**

If you're using [**server-side processing**](https://wpdatatables.com/documentation/table-features/server-side-processing/) tables in wpDataTables and have **caching** active on the page, you may encounter issues such as:

-   Tables sometimes load, but other times get stuck on an **infinite loading animation**
    
-   The table loads correctly on a desktop device but fails to load on other devices
    
-   The table loads when you’re logged in as an **Admin**, but not for non-logged-in users
    
-   Inspecting the browser’s **developer console** typically shows an **“Invalid JSON response”** or an **AJAX error**
    

These issues occur because cached pages interfere with the real-time server-side requests that are necessary for database communication.

Our developers are actively working on a fix. 🚧  
While we can’t provide an ETA, updates and fixes will be posted here:

-   **ChangeLog**: [https://wpdatatables.com/help/whats-new-changelog/](https://wpdatatables.com/help/whats-new-changelog/)
    
-   **Newsletter**: [https://wpdatatables.com/newsletter/](https://wpdatatables.com/newsletter/)
    

* * *

### 🛠 **Workaround Solutions**

Until a fix is released, there are two possible workarounds:

* * *

### 1\. **Disable Caching for Pages with Tables**

Most caching plugins allow you to **exclude specific pages** from caching.

-   Add the URLs where your wpDataTables are published to your caching plugin’s **exclusion list**.
    
-   Alternatively, disable caching entirely if acceptable for your site.
    

This ensures that server-side processing works without interference from cached content.

* * *

### 2\. **Use a SQL Query-Based Table to Disable Server-Side Processing**

For [**Manual Tables**](https://wpdatatables.com/documentation/creating-new-wpdatatables-with-table-constructor/building-and-filling-in-the-tables-manually/), server-side processing **cannot** be disabled directly.

However, since Manual Tables store their data in a SQL database, you can create a new [**SQL Query-based tabl**](https://wpdatatables.com/documentation/creating-wpdatatables/creating-mysql-based-wpdatatables/)**e** that calls the same source data. On this table, you will be able to **toggle server-side processing** off.

✅ **Steps to Create a SQL Query Table:**

1.  Go to the **Editing settings** of your Manual Table and find the **MySQL Table Name**.  
    
    ![](https://staticfiles.gleap.io/attachments/20250603151035_9807.png)
    
2.  Create a new SQL Query-based wpDataTable with the query:
    

```javascript
 SELECT * FROM TableName  
```

3.  During setup, you can disable server-side processing if the table has fewer than **2,000 rows**.  
    
    ![](https://staticfiles.gleap.io/attachments/20250603151035_2843.png)

This new SQL table will call the same data source — so any edits will still save back to the original database table.

For any SQL Query-based table with fewer than 2,000 rows, you can disable the server-side processing option, and it will work like tables linked from files — loading all rows in the browser regardless of the table’s pagination.

* * *

### ⚙ **(Optional) Increase Server-Side Processing Toggle Limit**

By default, wpDataTables will force server-side processing for tables with more than **2,000 rows**.  
If your table has more rows but you still want to disable server-side processing, you can increase this threshold by adjusting the plugin's code.

✅ **Steps to increase the limit:**

1.  Edit this PHP file via FTP on your Hosting server:
    
    `../wp-content/plugins/wpdatatables/source/class.wpdatatable.php`
    
    around line 3188 you'll see this:
    
    ```javascript
    if (is_array($res_dataRows) && count($res_dataRows) > 2000) {
    
    ```
    
    ![](https://staticfiles.gleap.io/attachments/20250603151035_8630.png)
    
    The lines of code may change during updates, as our developers occasionally add new lines. Therefore, it’s best to search for the line in a code editor using **CTRL+F** to locate it accurately.
    
    You can change the number **2000** to a value greater than the number of rows in your table to keep the **toggle option** for server-side processing available.
    
    Another PHP file in this path :
    
    **../wp-content/plugins/wpdatatables/source/class.wdtconfigcontroller.php**
    
    In this file, please search for this, there should be two occurrences, first one around line 82 as :
    
    ```javascript
    if (count($wpDataTable->getDataRows()) > 2000) {
    ```
    
    And second one around line 143:
    
    ```javascript
    if (count($wpDataTable->getDataRows()) > 2000) {
    
    ```
    
    That will increase the server-side processing option's automatic limit.
    

* * *

⚠ **Important**:  
Be cautious when increasing the limit:

-   Tables with up to **5,000–6,000 rows** usually perform fine without server-side processing.
    
-   Higher row counts may lead to slower page loads or browser freezes, depending on your hosting server’s PHP limitations.
    

We recommend testing table performance carefully — if the page loads too slowly, you can re-enable server-side processing at any time in the table’s backend settings.

* * *

### 💬 **Summary**

This issue only affects **server-side processing** tables when caching is active.  
It can occur with **Manual tables**, **SQL Query-based tables**, and **Gravity Forms integration tables** if the server-side processing option is enabled.  
(_It does not affect other table types linked from source files such as CSV, Excel, Google Sheets, JSON, PHP array, and others._)

🛠 **Solution 1**: Disable caching for pages where tables are displayed.

🛠 **Solution 2**: Create a new **SQL Query-based table** calling the same data source and disable server-side processing.

⚙ **Optional**: Carefully increase the server-side processing toggle limit if needed.

* * *

### 📢 **Stay Updated**

For the latest news on updates and bug fixes:

-   ChangeLog: [https://wpdatatables.com/help/whats-new-changelog/](https://wpdatatables.com/help/whats-new-changelog/)
    
-   Newsletter: [https://wpdatatables.com/newsletter/](https://wpdatatables.com/newsletter/)
    

* * *

### ✉ **Need Help?**

Feel free to contact our Support Team if you have any questions — we’re here to assist you!
