批量生成二维码问题

昨天在做项目时碰到一个问题,这个需求是需要一次性插入数据库1万条数据,并用回调函数返回插入的数据,然后在前台生成二维码。我插入数据库1万条数据用了2秒不到,速度很快。但是前台打印二维码我用的是JS的QRcode插件,这个插件每次生成二维码都要重新实例化QRcode对象,速度特别慢,我生成5000个二维码用了7分钟.....请问JS大神,这个如何优化?

 function butt() {

    $("#hidden").hide();
    $('#printing').css("display",'');
     var goods_id = $('#sele').find("option:selected").val();//产品id         
    var goods_num = $('#num').val();//产品数量
    $.ajax({
        url: "{:url('roots/tracecode/makeTraceCode')}",
        type: 'post',
        data: {
            'goods_id': goods_id,
            'goods_num': goods_num
        },
        success: function (data) {//回调的1万条数据,每条的格式为32位的字符串
           var res = JSON.parse(data);
            for (var index in res) {
               new QRCode(document.getElementById("qrcode"), res[index]['t_code']);
               //慢就慢在这里  
             }
         
         },
        error: function (err) {
          console.log('错误');
        }
    });

}


慢就慢在代码中的for in循环上了,我还考虑用php自己的phpqrcode类,但是如果用这个类的话,是从后台生成好后传给前台图片的路径,那样就得把图片保存到服务器上。一次打印1万个的话,服务器项目文件就会很大吧...
求大佬指点....如何优化速度?
阅读 3.7k
2 个回答

不每次实例化新对象,每次使用qrcode.makeCode()这个函数试试会不会效率有所提升

var res = JSON.parse(data);
var qrcode = new QRCode('qrcode');
for (var index in res) {
   qrcode.makeCode(res[index]['t_code']);  
}

我建议不要使用js的QRcode插件,生成的二维码精度很差,在投影屏幕上效果很不差。建议用后台程序生成二维码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题