2011-07-20 35 views
6

我開發了一個應用程序,使用HTML5 + WebSQL將本地數據庫中的數據同步到服務器。如何從JavaScript壓縮WebSQL數據庫

當數據被刪除時,sqlite數據庫文件的大小保持不變。我知道這包含空的空間,並且在插入新數據時它會被填充,但是由於限制,我希望保持儘可能小的大小。

我知道sqlite中的VACUUM命令可以壓縮數據庫並刪除未使用的空間,但是當我嘗試在JavaScript中的WebSQL數據庫上運行它時,它會失敗並顯示錯誤「邏輯錯誤或數據庫缺失」。從瀏覽器外部運行該命令可以正常工作。

我的問題是:

  1. 能真空命令從JavaScript執行不知何故?

  2. 瀏覽器是否自動執行此操作並最終會被調用? (找不到關於此的任何文檔)

感謝您的任何幫助。

回答

4

由於WebSQL的禁止/停止工作性質,錯誤/功能請求沒有 - 也不會 - 永遠無法兌現。例如,Chromium bug也存在同樣的問題,但沒有任何迴應。

看來,最糟糕的是你的兩個問題屬實:

1:由於在未連接到數據庫的真空命令只能運行,它只能在命令行中運行。看起來,在瀏覽器或JavaScript中沒有「斷開數據庫,然後運行VACUUM」命令。

2:不要指望它。目前尚不清楚,它會在達到最大尺寸限制時運行,即使這樣做,您會在達到最大尺寸限制之前很長時間纔會注意到重大減速。

最多你可以發送一個命令給一個插件,或者在javascript上下文之外的東西,它本身可以運行這個命令......現在它已經被棄用了,所以這是一個毫無意義的問題。對於遺留應用程序,如果必須具有該功能,則必須在簡單的網頁/ js上下文之外完成該功能。

未來/現代應用程序現在使用IndexedDB;這個問題僅適用於傳統應用程序。