2017-03-31 3 views
0

私は自分の組織で実行されるように設計された検索ツールを構築しています。私の展開戦略は:ローカルに実行されるHTML5 Webページに200MBのデータベースを配布する方法

  • ファイルサーバーに保存されているHTML5 Webページです。
  • 200MB JSONまたは別のファイルにあるJavaScriptファイル。

    {....}のサイズは200メガバイト程度である
    var data = {....}; 
    

今の200メガバイトのファイルのような文を使用して.jsファイルです。これはMacのApple Safariで動作していますが、Chromeでパフォーマンスの問題が発生します。 Firefoxの読み込みには数分かかりますが、それでも問題ありません。それは記憶上の問題のようです。

別のオプションは、ファイルを.jsonに保存してJQueryでロードすることです。

これを行うより良い方法はありますか? 200MBのファイルには数十万のレコードが含まれています。

EDIT私はバックエンドロジックを持つWebサーバーを持っていないので、データベース全体がローカルでなければなりません。

また、現時点で200MBのオブジェクトがJSONオブジェクトとして、または配列としてよりよく配布されているかどうかは不明です。

EDIT私は今あなたが(HTMLがfile:// URLから来ている場合でも)file:// URLを読み取るためのjQueryを使用することはできませんので、私は、JSONオブジェクトに格納することができないと判断しました。だから今私の計画は、200000のファイルを01200054のファイルにエンコードすることです。値は{}に挿入されます。

+0

ウェブページ内に読み込むにはかなり大きなファイルです。古いPCを持っている人はすぐにクラッシュするでしょう:P – Red

+0

JavaScriptの200メガバイトはちょっと怖いです。 どのような種類のデータですか?同様のキーを持つ繰り返しレコードのリストです(例:? – AKX

+4

本当に一度にすべてのデータが必要ですか?なぜデータベース(Webサーバー)を使用しないのですか? – Cristy

答えて

0

この場合、データベースにデータを保存することをお勧めします。

あなたの検索ツールは、クライアントのブラウザから入力データを送信する必要があり、サーバーは必要なjson形式の応答を返す必要があります。 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data

https://www.html5rocks.com/en/tutorials/file/dndfiles/はまた、それを行うのは本当に良い選択がない、メモリリーク原因:これは、あなたがこれらの記事をお読みくださいビッグデータ

+0

私はサーバーを持っていません。すべてが静的ファイルでなければなりません。 – vy32

+0

@ vy32 [OK]をクリックすると、Webワーカーで実装することができます:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers –

1

のための最も一般的なソリューションです。私は正しい選択ではないと思う。

0

私は答えがあります。単一のJSONオブジェクトをダンプする代わりに、空のオブジェクトをダンプしてフィールドに入力しました。次のような並べ替え:

var all_files = {}; 
all_files[".489454.padl"] = [3601335]; 
all_files[".bash_history"] = [3601336]; 
all_files[".bash_profile"] = [3601337, 4243581]; 
all_files[".bash_profile-anaconda.bak"] = [3601338]; 
all_files[".bashrc"] = [3601339, 4243582]; 
all_files[".CFUserTextEncoding"] = [3601340, 3953453, 3953467, 3953492, 3953506, 3953520, 3953534, 3953655, 3953669, 3953683, 3954184, 3954198, 3954212, 3954226, 3954240, 3954254, 3954268, 3954282, 3954298, 3954741, 3954755, 3954771, 3954786, 3954817, 3954833, 3954847, 3954863, 3954884, 3954898, 3954912, 3954928, 3955916, 3955930, 3955944, 3955958, 3955983, 3955997, 3956011, 3956025, 3956039, 3956055, 3956069, 3956083, 3956097, 3956111, 3956125, 3956139, 3956153, 3956167, 3956181, 3956195, 3956209, 3956223, 3956237, 3956257, 3956273, 3956287, 3956301, 3956328, 3956347, 3956361, 3956375, 3956393, 3956407, 3956421, 3956441, 3956457, 3956494, 3956508, 3956522, 3956541, 3956557, 3956574, 3956588, 3956602, 3956618, 3956632, 3956649, 3956665, 3956765, 3956779, 3956793, 3956808, 3956824, 3956838, 3966259, 3966273, 3966288, 3966308, 3966326, 3966340, 3966354, 3966369, 3966384, 3966402, 3966416, 3966432, 3966453, 3966469, 3966483, 3966497, 3966542, 3966556, 3966570, 3966584, 3966598, 3966612, 3966636, 3966652, 3966666, 3966682, 3966697, 3966711, 3966729, 3966756, 3966770, 3966784, 3966798, 3966812, 3966826, 3966887, 3966901, 3966917, 3966931, 3966947, 3966962, 3966977, 3966991, 3967008, 3967024, 3967041, 3967058, 3967072, 3967086, 3967100, 3967114, 3967129, 3967144, 3967158, 3967172, 3967186, 3967200, 3967214, 3967228, 3967242, 3967256, 3967270, 3967284, 3967298, 3967315, 3967332, 3967349, 3967366, 3967383, 3967400, 3967414, 3967432, 3967472, 3967494, 3967519, 3967539, 3967553, 3967567, 3967581, 3967596, 3967610, 3967627, 3967641, 3967655, 3967669, 3967686, 3967701, 3967715, 3967813, 3967835, 3967849, 3967863, 3967877, 3967891, 3967912, 3967926, 3967940, 3967954, 3967969, 3967983, 3967997, 3968179, 3968201, 3968216, 3968232, 3968375, 3968549, 3968563, 3968613, 3968725, 3968739, 3968754, 3968769, 3968783, 3968797, 3968812, 3969411, 3969425, 3969439, 3969453, 3969468, 3969482, 3969496, 3969510, 3969524]; 
all_files[".DS_Store"] = [3601341, 3601457, 3601614, 3601622, 3682878, 3682900, 3683109, 3683116, 3683131, 3683159, 3683837, 3683838, 3683864, 3685165, 3685689, 3686006, 3686154, 3686208, 3686658, 3686951, 3688568, 3691304, 3691654, 3691706, 3698223, 3702806, 3703841, 3705589, 3707517, 3709434, 3709601, 3712204, 3712575, 3713471, 3714040, 3723182, 3723186, 3723577, 3723619, 3723697, 3724289, 3724323, 3724354, 3724644, 3724666, 3724687, 3724711, 3724929, 3729720, 3729721, 3729808, 3729859, 3745259, 3745417, 3749212, 3749214, 3752731, 3754225, 3754282, 3754697, 3754725, 3758418, 3762019, 3762050, 3762076, 3762135, 3762484, 3764339, 3767112, 3767162, 3770129, 3770205, 3770401, 3782075, 3782082, 3782103, 3782110, 3782128, 3782144, 3782158, 3782227, 3782297, 3782335, 3782453, 3782531, 3782575, 3782681, 3782800, 3782843, 3782912, 3782939, 3782994, 3785013, 3785271, 3786663, 3787204, 3787259, 3787266, 3788923, 3790797, 3790803, 3790941, 3790974, 3791013, 3791036, 3791053, 3791056, 3791205, 3792915, 3793142, 3793522, 3793765, 3799643, 3799796, 3804461, 3804592, 3804679, 3804763, 3804843, 3804857, 3804863, 3804891, 3804983, 3805631, 3806138, 3806264, 3806518, 3807440, 3807461, 3807473, 3816174, 3832254, 3834259, 3834271, 3834289, 3834708, 3835089, 3835661, 3835780, 3836513, 3836635, 3836990, 3837258, 3837281, 3838040, 3842299, 3842361, 3842362, 3842443, 3843321, 3843712, 3844005, 3845137, 3845205, 3848494, 3848643, 3850301, 3851318, 3851539, 3851581, 3851586, 3851718, 3851749, 3855131, 3856267, 3856405, 3856600, 3856617, 3856733, 3856789, 3856825, 3857691, 3857694, 3857714, 3858011, 3858087, 3858201, 3858261, 3858427, 3858440, 3858451, 3858466, 3858484, 3858512, 3858518, 3858632, 3858647, 3859178, 3859226, 3859817, 3859860, 3860031, 3860078, 3862433, 3862466, 3862493, 3862556, 3862629, 3862669, 3862785, 3863120, 3863137, 3863143, 3863189, 3863190, 3863298, 3863402, 3863624, 3863912, 3863919, 3868043, 3868103, 3937674, 3937883, 3939101, 3953451, 3966103, 3966148, 3966208, 3971417, 3972095, 3972176, 4000541, 4001581, 4001584, 4013248, 4073121, 4097129, 4124083, 4140856, 4205726, 4208195, 4208198, 4219015, 4219018, 4219025, 4219165, 4220286, 4221936, 4221956, 4222034, 4222073, 4222114, 4222208, 4222241, 4222369, 4222372, 4222417, 4222458, 4222533, 4222554, 4222608, 4222677, 4222688, 4222706, 4222777, 4222893, 4222992, 4223033, 4223088, 4223161, 4243924, 4244119, 4244333, 4245043, 4245045, 4245051, 4245057]; 
all_files[".emacs"] = [3601342, 4243585]; 
all_files[".gitconfig"] = [3601343]; 
all_files[".iterm2_shell_integration.bash"] = [3601344]; 
all_files[".julia_history"] = [3601345]; 
all_files[".lesshst"] = [3601346]; 
all_files[".profile"] = [3601347, 4243588]; 
all_files[".python_history"] = [3601348]; 
all_files[".pythonhistory"] = [3601349]; 
all_files[".rnd"] = [3601350]; 
... 

ファイル全体が約90MB(現時点では)になります。私の4歳のMacBook ProにGoogle Chromeをロードする時間は502msです。これはまったく合理的です。

関連する問題