自动保存到文本区域需要太长时间

时间:2019-06-06 19:04:33

标签: javascript php mysql

@Service public class ParentService { @Autowired private ParentRepository parentRepository; @Autowired private ChildRepository childRepository; @Transactional @Lock(LockModeType.PESSIMISTIC_WRITE) public void refresh(List<ParentEntity> parents) { childRepository.deleteAllInBatch(); childRepository.resetAutoIncrement(); parentRepository.deleteAllInBatch(); parentRepository.resetAutoIncrement(); parentRepository.save(parents); } } @Repository @Transactional public interface ParentRepository extends JpaRepository<ParentEntity, Integer> { @Modifying @Query( value = "alter table parent auto_increment = 1", nativeQuery = true ) void resetAutoIncrement(); } @Repository @Transactional public interface ChildRepository extends JpaRepository<ChildEntity, Integer> { @Modifying @Query( value = "alter table child auto_increment = 1", nativeQuery = true ) void resetAutoIncrement(); } 上没有Google Documents按钮。键入文档会自动保存所有更改。

如果键入两个词(SAVE),则消息Saving...Saved之间大约需要2秒钟。

尝试在我自己的网站上创建相同的功能。 文本区域ID lorem ipsum具有输入事件:

tx

index-pro.php

$('#tx').on('input', function(){
    console.log('Saving...');   
    let story = $(this).val();
    $.post('index-pro.php', {fn: 'update', args: [story]}, function(){
        console.log('Saved');
    });
});

两个function update($story){ global $db; $sql = "update arts set story = :astory"; $st = $db->prepare($sql); $st->execute([ ":astory" => $story ]); } 之间总是需要大约5秒钟。

原因是什么,是否有可能像console.log一样获得2秒?

还有更多-我的电脑和托管服务器之间的距离约为3公里。

我的电脑和Google服务器之间的距离远不止于此。

有帮助吗?

1 个答案:

答案 0 :(得分:2)

input上执行此操作意味着每次击键都会保存。如果我输入500个字符,那就是500个AJAX调用。他们将开始堆积并失败。

请考虑“消除”您的AJAX呼叫,以免每次击键都不会触发它们。 Lodash的really good debounce function被广泛使用。