📌  相关文章
📜  https: static.xx.fbcdn.net rsrc.php v3 ya r O2aKM2iSbOw.png?_nc_x\u003dRi_z-RDzEFt", "page_transition": "RELOAD", (1)

📅  最后修改于: 2023-12-03 15:01:20.520000             🧑  作者: Mango

介绍

本文介绍的主题是关于URL中的一串参数——_nc_x。这个参数有什么作用?在实际应用中,如何使用它?

读者可以按照下面的章节,了解完整的知识体系。

_nc_x参数的作用

在URL中,我们经常看到带有_nc_x参数的情况,比如:

https://static.xx.fbcdn.net/rsrc.php/v3/ya/r/O2aKM2iSbOw.png?_nc_x=Ri_z-RDzEFt

那么这个参数的作用是什么呢?

官方文档中解释道,_nc_x参数是为了防止CDN(内容分发网络)缓存而设立的。当访问一个URL时,CDN会根据URL的路径和查询参数产生缓存,返回相同的结果给下一个请求。但若是URL中带有不同的_nc_x参数,CDN则认为这是一个不同的请求,从而不会返回缓存结果。

在实际应用中如何使用_nc_x

为了避免CDN缓存,通常的做法是在URL后面加上一个随机的字符串作为查询参数,比如:

https://example.com/image.png?_={random_string}

但这样在URL缓存性能的影响上不利,因为不同的字符串意味着不同的URL,而服务器在返回请求时,必须单独处理每个URL。

所以我们使用_nc_x参数取代上面的随机字符串,以得到一个更好的性能,提高URL缓存的能力。

具体做法如下:

const url = 'https://example.com/image.png';

// 利用随机字符串生成不同的_nc_x参数
const nc_x = Math.random().toString(36).substring(2, 15) +
  Math.random().toString(36).substring(2, 15);

// 将_nc_x参数添加到URL查询参数中
const newUrl = url + `?_nc_x=${nc_x}`;

console.log(newUrl);
参考资料
  1. Facebook CDN缓存参数 _nc_的解释