我正在尝试创建一个能够使用真实英语单词创建密码的密码生成器。我有5个csv文件,每个文件包含不同字符的单词即(3个字母单词,4个字母单词)。我的问题是关于效率以及我应该如何处理这个问题。将这些内容放在服务器上并查询它们是否更好?或者我应该将它们保存在文件中并在用户想要使用真实英语单词创建密码时进行ajax调用以加载所有5个文件。所有5个文件的总大小约为600-700kb,如果我使用ajax调用加载这些文件,我将能够在恒定时间内找到我想要的单词。每次用户加载应用程序时必须加载额外的700kb数据是不是很糟糕?
答案 0 :(得分:0)
使用长度为3到7的单词字典的快速示例,没有特殊字符和数字:
function generatePassword() {
console.time("generatePassword");
$.get("https://raw.githubusercontent.com/rokobuljan/3-7-en-dic/master/dic-3-7.txt", function(data) {
var dic = data.split("\n"),
len = dic.length,
pwd = "";
while (pwd.length < 15) pwd += dic[~~(Math.random() * len)];
$("#resultPassword").text(pwd);
console.timeEnd("generatePassword");
});
}
// The dictionary holds 125,409 lines of 3-7 char words.
// The first time we generate will take longer (0.5s ~ 1s)
// since we're still fetching our file
generatePassword();
// Now that the browser has cached the file,
// subsequent clicks will take ~28ms to generate
$("#generatePassword").on("click", generatePassword);
<button id="generatePassword">↻</button>
<span id="resultPassword"></span>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>