как эффективно рендерить файлы после ajax-запроса - PullRequest
1 голос
/ 20 мая 2019

Для файловой системы я использую ajax-запрос для переименования каталога или файла.

Сканирование файлов в каталоге:

$files = array_diff( scandir($dir), array(".", "..", "tmp") );

Часть кода php:

if( isset($_POST['new_name']) ){        

// code for renaming goes here
    echo $_POST['old_name'] . 'renamed to ' . $_POST['new_name'];
exit;
}

Для переименования каталога или файла, отображения имени файла, даты, расширения и т. Д., Я использую foreach, и структура выглядит следующим образом:

<div class="echo"><div>
<div class="dynamic-content">

foreach($files as $file) {

?>
 <!-- Rename-->     
<td class="td-rename">
  <h4>Rename File/Folder</h4>
  Current name: <b><?php echo basename($dir.'/'.$file); ?></b><br />
  <form class="rafform" method="post">
    <input type="hidden" class="old_name" name="old_name" value="<?php echo $dir . '/' . $file; ?>" />                                      
    <input  type="text" class="new_name form-control" name="new_name" placeholder="only a-z, A-Z, 0-9, -, _" value="" />
    <input type="submit" class="submitmodal rename btn " value="Rename" />                      
  </form>
</td>

<!-- below are coming more `td's` like:-->
<td class="td-filename">
…………
</td>    
<td class="td-date">
…………
</td>
<td class="td-extension">
…………
</td>
and so on...
<?php } ?> // end foreach
</div> <!-- end dynamic content-->

Мой запрос ajaxвыглядит следующим образом:

$(document).on('submit' , ".rafform" , (function(e) {

e.preventDefault();

$.ajax({
url: "",
type: "post",
data:  new FormData(this),
cache: false,               
contentType: false,
processData: false,             
beforeSend: function () {
    window.location.hash='close'; /* show spinner and disappear upload modal */                 
    },
success: function(data) {

    $('.dynamic-content').load('index.php .dynamic-content > *');
    $('.echo').append(data);
    $('.uploadspinner').hide();                 
    $(".echolist").delay(5000).fadeOut(500);

},


});

}));

Итак, после каждого запроса: эхо от PHP помещается в div с классом echo, и чтобы немедленно увидеть изменения, я делаю load() той же страницы index.php только с содержимым в div с классом dynamic-content.Потому что в этом div, файлы отображаются.Пользователь сразу видит, что файл переименован.

Но теперь я замечаю, что, когда в каталоге много подкаталогов и файлов, рендеринг файлов становится все медленнее и медленнее.

Существует ли более быстрый способ рендеринга файлов после изменения (переименовывать для каждого примера)?Для меня важно, чтобы каждое изменение было сразу видно пользователю!И если да, то какую структуру я буду использовать?

...