离线缓存

了解如何在离线时缓存 Sentry 事件。

如果您的 JavaScript 应用程序设计为在离线状态下继续工作,那么在网络不可用时丢弃事件并错过离线事件可能会导致您丢失重要信息。

为了启用离线事件缓存,可以使用 makeBrowserOfflineTransport 包装现有的传输,并使用浏览器的 IndexedDB 存储来排队事件。一旦应用程序重新上线,所有事件将一起发送。

Copied
import * as Sentry from "@sentry/browser";

Sentry.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
  transport: Sentry.makeBrowserOfflineTransport(Sentry.makeFetchTransport)
  transportOptions: {
    // see below
  }
})

以下是您可以添加到 transportOptions 的一些可选属性:

Copied
transportOptions:{
  /**
   * Name of IndexedDb database to store events
   * Default: 'sentry-offline'
   */
  dbName: string;
  /**
   * Name of IndexedDb object store to store events
   * Default: 'queue'
   */
  storeName: string;
  /**
   * Maximum number of events to store
   * Default: 30
   */
  maxQueueSize: number;
  /**
   * Flush the store shortly after startup.
   * Default: false
   */
  flushAtStartup: boolean;
  /**
   * Called before an event is stored.
   * Return false to drop the envelope rather than store it.
   *
   * @param envelope The envelope that failed to send.
   * @param error The error that occurred.
   * @param retryDelay The current retry delay in milliseconds.
   */
  shouldStore: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise<boolean>;
}

由于缺乏 IndexedDB 功能,离线缓存不支持 IE 浏览器。