【问题标题】:Build id from the url path for caching从 url 路径构建 id 以进行缓存
【发布时间】:2014-03-13 11:11:09
【问题描述】:

我想将我们的数据缓存在数据库或文件系统上。但我不确定如何从不同的 url 创建 id。

url路径:每天/时间/日光/方法/位置.json = "/daily/12-02-20/yes/5/london.json"

每个值都可以不同,如果其中一个值不同,那么我想用新数据保存新缓存。

关于如何为数据库或文件系统的每个唯一路径创建 id 的任何建议?

【问题讨论】:

  • 如果你的url中的部分组合已经是唯一的,那么你不需要创建key,因为你可以简单地使用url作为key。附带说明一下,考虑使用 memcached 或其他键/值存储而不是平面文件或用于缓存的数据库。
  • 除了散列答案之外,不要忘记来自 API 的 JSON 响应可以利用 HTTP 缓存(如 eTags 或诸如此类)这一点,您也应该利用这一点。换句话说,适用于“静态”内容的传统缓存仍然可以工作。

标签: php mysql performance algorithm caching


【解决方案1】:

我会使用散列函数对 URL 进行散列并将其用作缓存 ID。出于类似的原因,我在我的一些项目中这样做。

sha1($url);

您使用哪种散列函数取决于您。 PHP hashes.

【讨论】:

  • hmm .. 我之前尝试过,使用 md5,它没有工作.. 但它现在工作.. 我猜它是因为时间戳,它为 url 生成不同的 id。,我需要转换迄今为止的时间戳。
  • 嗯,它更短的原因是它只有 32 位,而 md5 是 128 位。您更有可能与crc32 发生冲突。可能不会有问题,但我会选择md5
【解决方案2】:

你已经使用 md5 方法生成唯一 id,

$url = '/daily/12-02-20/yes/5/london.json';
$id = md5($url);

现在使用这个 $id 作为该 url 的 id..

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多