2013-02-05 45 views
7

Chúng tôi đang xây dựng một ứng dụng web lưu trữ nhiều tệp dưới dạng blob với indexedDB. Nếu người dùng sử dụng tối đa ứng dụng của chúng tôi, chúng tôi có thể lưu trữ tối đa 15 GB tệp trong indexeddb.Giới hạn lưu trữ cho lập chỉ mục trên IE10

Chúng tôi đã gặp sự cố với IE10, mà tôi nghi ngờ mạnh mẽ là vấn đề hạn ngạch.

Sau khi lưu thành công một số tệp, một cuộc gọi mới đến store.put(data, key); sẽ không bao giờ kết thúc.

Về cơ bản, chức năng sẽ được gọi, nhưng không có sự kiện thành công hay sự kiện lỗi nào sẽ được gọi.

Nếu tôi nhìn vào thư mục IndexedDB của IE 10, tôi sẽ thấy một tập tin giống như các tệp tạm thời (512 KB mỗi cái) được tạo và loại bỏ vô thời hạn.

Khi xem cửa sổ tham số "Cache and Database", tôi thấy rằng cơ sở dữ liệu của trang web của tôi đã đạt đến 250 MB.

Nhìn xa hơn, tôi thấy mục nhập blog này http://msdnrss.thecoderblogs.com/2012/12/using-html5javascript-in-windows-store-apps-data-access-and-storage-mechanism-ii/ tự động nói rằng giới hạn bộ nhớ cho ứng dụng Windows Store là 250 MB.

Tôi không sử dụng bất kỳ cơ chế Windows Store nào, nhưng tôi đã cho rằng tôi có thể là nạn nhân của cùng một giới hạn tùy ý.

Vì vậy, câu hỏi của tôi là:

  • Có cách nào để vượt qua giới hạn này? Người dùng được yêu cầu cho phép vượt quá giới hạn 10 MB, nhưng tôi thấy không có câu hỏi nào xuất hiện cho người dùng khi đạt tới 250 MB.

  • Có cách nào khác để lưu trữ hơn 250 MB dữ liệu với IE10 hay không.

Cảm ơn, tôi sẽ tìm mọi manh mối.

+0

Tôi biết đây là câu hỏi cũ nhưng bạn có tìm thấy giải pháp cho IE không kích hoạt bất kỳ trình xử lý lỗi hoặc thành công nào khi đạt hạn ngạch không? Tôi đang sử dụng indexedDB để lưu trữ một lượng lớn dữ liệu. Khi giới hạn đạt đến quá trình xử lý chỉ bị treo, không có lỗi hoặc gọi lại thành công. Làm cho nó rất khó để thực hiện một bộ nhớ cache kiểu 'LRU' khi nó trở nên đầy. – ste2425

+0

Bỏ qua bình luận cuối cùng của tôi, đến muộn để chỉnh sửa nó. IE không khóa. Nhưng nó không kích hoạt trình xử lý 'onabort' không phải là trình xử lý lỗi. – ste2425

Trả lời

5

Tôi sợ bạn không thể. Cung cấp giới hạn lưu trữ và yêu cầu người dùng cho phép nhiều không gian hơn là trách nhiệm của nhà cung cấp trình duyệt. Vì vậy, tôi không nghĩ rằng tùy chọn đầu tiên được áp dụng.

Tôi biết người dùng có thể cho phép trang web vượt quá giới hạn cung cấp (tùy chọn internet> Chung> Lịch sử duyệt web> cài đặt> bộ nhớ cache và cơ sở dữ liệu), nhưng tôi không biết điều đó có vượt quá 250MB hay không. Nó có thể là đây là một giới hạn hardcoded bạn không thể vượt quá.

Giới hạn này bị ràng buộc với một miền có nghĩa là bạn không thể giải quyết nó bằng cách tạo nhiều cơ sở dữ liệu. Giải pháp duy nhất sẽ là lưu trữ trên nhiều tên miền, nhưng trong trường hợp đó, bạn không thể truy cập chéo chúng. Cũng như tôi thấy giới hạn 250MB sẽ dành cho API indexeddb và API tệp kết hợp

+2

Tôi sợ một thứ như thế. Để biết thông tin, nếu người dùng đặt giá trị cao hơn 250 trong "Thông báo cho tôi khi bộ nhớ cache hoặc cơ sở dữ liệu của trang web vượt quá", chúng tôi sẽ có thể đạt đến giới hạn đó. Tuy nhiên, khi người dùng nhấp vào OK để cho phép trang web vượt quá giới hạn đó, cùng một lỗi (quy trình nền vô hạn) sẽ xuất hiện.Thật không may, chúng tôi không thể đặt giới hạn cao hơn 999 MB (damn it Microsoft, tại sao bạn tiếp tục suy nghĩ bạn thông minh hơn người dùng của mình) – Thomas

+1

Mặt khác, tại sao bạn muốn lưu trữ lượng dữ liệu đó trên máy khách? Có lẽ bạn cần phải thiết kế lại khái niệm bạn đang sử dụng ngay bây giờ. Tôi đã đọc một bài báo chỉ ra rằng API indexeddb là thú vị cho đến khi điểm 250mb. Ngoài ra, nó sẽ mất hiệu suất ... –

+5

Nếu bạn đang viết một ứng dụng HTML5 thay vì ứng dụng desktop truyền thống, bạn có thể muốn lưu 250 MB dữ liệu trong IndexedDB vì lý do tương tự mà bất kỳ ứng dụng desktop truyền thống nào hiện đang tiết kiệm nhiều dữ liệu vào ổ cứng. Ví dụ, như một sở thích, tôi đang làm việc trên một trò chơi hoàn toàn phía máy khách có thể tạo ra các cơ sở dữ liệu IndexedDB vượt quá 100 MB (về mặt lý thuyết chúng có thể vô cùng lớn nếu trò chơi tiếp tục đủ lâu, nhưng tôi chưa thử nghiệm nhiều hơn 100 MB), và trong các bài kiểm tra rất khoa học của tôi, tôi chưa có vấn đề về hiệu suất. – dumbmatter

Các vấn đề liên quan