5

HTML5 + WebSQL を使用して、ローカル データベースからサーバーにデータを同期するアプリを開発しました。

データが削除されても、sqlite データベース ファイルのサイズは変わりません。これには空のスペースが含まれており、新しいデータが挿入されると埋められることはわかっていますが、制限があるため、サイズをできるだけ小さくしたいと考えています。

sqlite の VACUUM コマンドがデータベースを圧縮して未使用の領域を削除できることは知っていますが、JavaScript から WebSQL データベースで実行しようとすると、「論理エラーまたはデータベースが見つかりません」というエラーで失敗します。ブラウザの外部からコマンドを実行すると正常に動作します。

私の質問は次のとおりです。

  1. JavaScript から VACUUM コマンドを実行できますか?

  2. ブラウザはこれを自動的に実装し、最終的に呼び出されますか? (これに関するドキュメントが見つかりません)

助けてくれてありがとう。

4

1 に答える 1

4

WebSQL の放棄/作業停止の性質により、バグ/機能の要求は受け入れられませんでした (今後も受け入れられません)。これと同じ問題が、応答のない Chromium バグなどとして存在します。

あなたの2つの質問には最悪のことが当てはまるようです:

1:vacuum コマンドはデータベースに接続されていない場合にのみ実行できるため、コマンド ラインからのみ実行できます。ブラウザやJavaScriptには「データベースを切断してからVACUUMを実行する」コマンドはないようです。

2:当てにしないでください。最大サイズ制限に達したときに実行されるかどうかは明らかではありません。実行されたとしても、最大サイズ制限に達するずっと前に、大幅な速度低下に気付くでしょう。

せいぜい、それ自体がコマンドを実行できるプラグイン、または JavaScript コンテキストの外部にある何かにコマンドを送信できる可能性があります...現在は非推奨になっているため、かなり重要な点です。レガシーアプリケーションの場合、関数が必要な場合は、単純な webpage/js コンテキストの外で実行する必要があります。

将来/最新のアプリケーションは現在 IndexedDB を使用しています。この質問は、レガシー アプリケーションについてのみ回答されています。

于 2013-03-15T20:37:07.593 に答える