Project

General

Profile

Actions

Bug #101798

open

Prevent saving unchanged inline records to save performance

Added by Sebastian Michaelsen about 1 year ago. Updated 4 months ago.

Status:
New
Priority:
Should have
Assignee:
-
Category:
Performance
Target version:
-
Start date:
2023-08-30
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
11
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Problem

When you have a record, which has 10 inline items and the record is translated (along with the inline items) into 10 languages, then saving the record even with no changes to the inline items causes the DataHandler to save 110 database records which can take some 30 seconds.

Why is that?

The inline records have toggles to hide/unhide them (unless the table does no support that), which means when saving the record there will be a `someid => ['hidden' => '0']` entry for each inline item, which causes DataHandler to save that inline item, which then also triggers saving of its translations.

Solution(?)

It could be solved in backend JavaScript, so that the inline `hidden` form fields are only included in the request when their value was changed.

Workaround

For our project I created a backend middleware, that intercepts the `data` when a record is saved and removes any entries, that have just the hidden field and it is unchanged. (Yes, I create a database request for each of those entries but it's still way faster than before)


Files

PreventSavingUnchangedInlineRecords.php (2.99 KB) PreventSavingUnchangedInlineRecords.php workaround middleware Sebastian Michaelsen, 2023-08-30 11:27
Screenshot_2023-08-30_at_13_37_14.png (475 KB) Screenshot_2023-08-30_at_13_37_14.png Sebastian Michaelsen, 2023-08-30 11:41
Actions

Also available in: Atom PDF