小编iur*_*uri的帖子

如何将唯一的GCM注册ID存储到MySQL中

我正在设置Google Cloud Messaging机制的服务器端,使用MySQL存储移动应用程序提供的注册ID.由于Google可以发出最多4k的注册ID,因此我不得不将它们存储在TEXT字段中.到目前为止一切都很好,问题是我必须处理这样的情况:

  1. 用户登录应用程序
  2. 该应用从谷歌请求注册ID
  3. 该应用程序将新的注册ID发送到应用服务器
  4. 服务器存储该注册ID并将其链接到当前登录的用户
  5. 该用户注销并且新用户登录
  6. 应用程序向服务器发送与以前相同的注册ID
  7. 服务器必须能够看到注册ID已经在数据库中但链接到另一个用户
  8. 服务器取消注册ID与先前用户的链接,并将其链接到新登录的用户

所以问题是我必须确保数据库中注册ID的唯一性,但是我不能为该TEXT字段添加UNIQUE索引.

我能想到的可能的解决方案:

  • 计算注册ID的哈希值并强制该哈希值是唯一的,但可能存在冲突.
  • 我可以存储唯一的设备ID以及注册ID,并强制该设备ID是唯一的.我看到的问题是我不知道Android设备ID可以持续多久,而且我认为在某些情况下它不可用.
  • 每次收到新的注册ID时,我都可以执行搜索,但我认为这最终会导致性能很差的操作.

我确信我不是唯一面临这个问题的人,但我找不到好的解决方案.关于如何解决这个问题的任何想法?

mysql android push-notification google-cloud-messaging

10
推荐指数
1
解决办法
7181
查看次数

如何从 AWS S3 提供 Gziped webpack bundles

我需要从 AWS S3 提供 webpack 包(和派生资产),如果浏览器支持,我想提供这些文件 Gziped。S3 不会即时 Gzip 内容,因此您必须上传资产的未压缩和压缩版本,并实现从客户端选择相应版本的逻辑。

现在,当我从我的服务器提供 html 页面时,我可以选择加载main.bundle.js文件或其压缩版本main.bundle.js.gz,具体取决于Accept-encoding请求中的标头。

问题是 webpack 对我的资产的 Gziped 版本一无所知,因此它不断加载其余的捆绑块及其未压缩的文件。

有没有办法告诉 webpack 加载包块和其他附加后缀的文件(在这种情况下.gz)?

我能想到的唯一解决方案是生成两个单独的包,一个用于未压缩文件,另一个用于 gzip 文件,并使用不同的方式publicPath来区分它们。但我认为这可能有点矫枉过正,因为这两个捆绑包实际上是相同的。

有什么想法吗?

谢谢!

gzip web-applications amazon-s3 amazon-web-services webpack

5
推荐指数
1
解决办法
1732
查看次数