gpt4 book ai didi

php - 序列化一个数组并压缩字符串以在 url 中使用它

转载 作者:可可西里 更新时间:2023-11-01 13:30:41 28 4
gpt4 key购买 nike

问题:

  • 我们需要将一个数组序列化为一个短字符串,越短越好。
  • 重要性更多体现在大数组上而不是小数组上。
  • 该字符串将在 get 请求中使用,因此必须对其进行 url 解码。

当前代码片段

  /* 
array (size=3)
0 => string '/js/dhdbm78hdfb.js' (length=18)
1 => string '/js/dfg4dg.js' (length=13)
2 => string '/js/fg8hfhrt.js' (length=15)
2 => string '/js/yjtdygj.js' (length=14)
2 => string '/js/2q5g54rvfd.js' (length=17)
*/

$json = json_encode($data);
$gz = gzdeflate($json, 9);
$base64 = base64_encode($gz);
$paths = urlencode($base64);

// outputs: i1aK0c8qjtFPyUhJyjW3yEhJS9LLKlbSgQmnpZukpCOLpKVbZKRlFJUgi1VmlaRUpmchCxkVmqabmhSVpaWARGMB

不是很令人印象深刻,而且速度很慢,我认为应该有更好的方法...

问题

解决这个问题的最佳方法是什么?我们如何才能呈现尽可能小的字符串?

附言

速度慢不是最大的问题,但它是一个需要考虑的变量。如果可能,该数组将被散列并从缓存中检索。

最佳答案

如果您希望它尽可能快和尽可能小,请放弃通用工具并使用适合您发送的特定数据的方法。删除所有数组值之间重复的任何内容(例如“/js/”和“.js”),从序列化中删除所有数组语法,只发送一个字符串连接的唯一值列表,并在接收端。

如果必须,可以使用 gz 和 base64_encode 进一步压缩它,但拥有唯一数据的缺点之一是它必须唯一表示。

在此处查看所选答案:How to compress/decompress a long query string in PHP?


编辑:您是否有余地改为发布数据?这至少会避免与查询字符串相关的直接大小限制。它还将避免为 URL 的字符串编码、增加长度的必要性,并且您应该能够直接发送压缩内容,以节省大部分费用。

关于php - 序列化一个数组并压缩字符串以在 url 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com