在NGINX (代理)和Node / Express堆栈中处理侵略性缓存和URL指纹的推荐技术是什么?
谷歌在他们的最佳实践指南中推荐"use fingerprinting to dynamically enable caching.",这正是我想要达到的目标。
我看过很多不同的指纹识别方法,但我很难理解在什么样的场景下,这些指纹实际上会产生新的指纹,以及开发过程中的哪一部分是最好的选择。我之前曾假设,如果对文件进行“最后修改”更改,那么服务器将生成另一个指纹,但情况似乎还不是这样。(除非我配置错了)
以下是几种不同的方法:
运行时指纹
构建指纹
CI指纹
所以我希望有人能回答几个问题:
我觉得我错过了一些显而易见的东西,所以如果你能回答其中的一个问题,我会非常感激的。
发布于 2013-11-20 03:52:21
指纹和电子标签是单独的功能,以减少负载时间。
如果浏览器已经缓存了资产,并且资产没有更改,Etags就可以避免重新发送资产。但是,浏览器仍然需要一个单独的HTTP往返才能发送一个If-None匹配,然后返回304而不是修改。
加速HTTP往返的最佳方法是避免进行往返。当网站的第二页使用与第一页相同的资产,且这些资产具有遥远的未来缓存过期头时,则在第一次请求这些资产时,甚至不需要为这些资产进行一次往返旅行。
指纹是为每一项资产提供一个从其内容中派生出来的唯一名称的技术。然后,当资产中的一个位(例如CSS包)发生变化时,它的名称就会发生变化,因此浏览器将得到更新的资产。而且,由于指纹使用内容的加密散列,所以只要资产是相同的,在多个服务器上计算唯一名称是相同的。任何地方(CDN、ISP、网络设备或web浏览器中的缓存)都能够保存每个资产的副本,但是由于HTML引用了每个资产的唯一名称,所以只有正确版本的资产才能从缓存中得到服务。
每个浏览器都支持电子标签和指纹。
/aboutus的名称,而不是通过指纹获得的/aboutus-sfghjs3646dhs73shwsbby3。您链接到的所有解决方案都支持Javascript、CSS和图像的指纹,以及将指纹名称中的内容动态替换为HTML的方法。因此,HTML将引用/css-hs6hd73ydhs7d7shsh7w,直到您更改CSS中的一个字节,然后它们将引用/css-37r7dhsh373hd73 (一个不同的文件)。https://stackoverflow.com/questions/20074521
复制相似问题