我有一个使用Cloudflare 的网站(例如http://example.com).没有什么特别的,没有奇怪的页面规则,没有奇怪的设置,免费的计划.
当我访问http://example.com时,我收到了GET http://example.com请求的响应:
Cache-Control:no-cache, must-revalidate
CF-RAY:2b8d0490837f2828-SJC
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Sun, 26 Jun 2016 01:52:05 GMT
Expires:0
Pragma:no-cache
Server:cloudflare-nginx
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:Express
Run Code Online (Sandbox Code Playgroud)
请注意,响应没有ETag标头,即使它在我的原始服务器上已启用.
当我直接去原始服务器时,例如GET http://01.23.456.789/,我得到了这个回复:
Accept-Ranges:bytes
Cache-Control:no-cache, must-revalidate
Connection:keep-alive
Date:Sun, 26 Jun 2016 01:56:53 GMT
ETag:W/"4cf8-1558a5557a0"
Expires:0
Pragma:no-cache
X-Powered-By:Express
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么Cloudflare不会转发ETag标头?如何让Cloudflare向前推进ETag?Cloudflare 默认不缓存GET http://example.com请求,因为它是一个HTML页面.
假设我有一个在纽约运行的 Node.js 服务器,并且有一个客户端使用 Web 浏览器从加利福尼亚连接到它。我如何合理地期望从客户端调用的 Date.now() 与从服务器上的 node.js 调用的 Date.now() 相匹配,在大约 50-100 毫秒内(假设它们在完全相同的时刻被调用)?理论上,Date.now() 在机器和时区之间应该始终保持一致,因为 Date.now() “返回自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数”,对吧?