在2G移动连接下至少500毫秒的延迟环境中(~0.1mbps),向客户端发送大约10kb的css和js的最快、最有效的方法是什么?服务器上大约有5-10个文件。我可以想到三个选项:
另一方面,Facebook似乎自动生成他们的CSS(它们的名称是base64编码的),但是分成多达10个不同的文件发送给用户,而且他们甚至没有对其进行过多的优化;只删除部分空格。
我已经通过函数传递了所有文件进行压缩,因此这些操作都可行。我不想选择第一个选择,因为它更容易。
前两个选项利用缓存(第二个选项比第一个选项少一点),但第二个选项仅需要向服务器发出三个请求,第三个选项仅需要向服务器发出一个获取请求(忽略我们在某些页面上可能拥有的少量图像)。
Android / iOS是否跨浏览器重启缓存js和css?如果没有,那么内联听起来更好。
唯一的目标是最小化用户的平均加载时间。每个用户每天将在该网站上花费约100个页面加载时间,每天查看约40个css和js文件。 CSS和JS基本上是静态内容。它设置为缓存30天,并且如果文件发生更改,则使用
编辑:
我认为我应该澄清第二个选项中发现的两个选项。在整个网站范围内使用单个文件来保存CSS和JS是否是一个好主意?这只需要两个请求,并删除任何重复(或七重)缓存,因为某个函数位于不同的合并JS文件中的两个或多个文件中,但下载高达1MB的内容听起来并不好。
今天基本上每个视图都有一个组合的CSS,因此每次您再次查看相同的页面时,内容都会被缓存。然而,某些JS和CSS在多个页面上使用。
- 将所有js合并到一个文件中,将所有css合并到一个文件中
- 依次链接所有css和js文件
- 内联所有内容
另一方面,Facebook似乎自动生成他们的CSS(它们的名称是base64编码的),但是分成多达10个不同的文件发送给用户,而且他们甚至没有对其进行过多的优化;只删除部分空格。
我已经通过函数传递了所有文件进行压缩,因此这些操作都可行。我不想选择第一个选择,因为它更容易。
前两个选项利用缓存(第二个选项比第一个选项少一点),但第二个选项仅需要向服务器发出三个请求,第三个选项仅需要向服务器发出一个获取请求(忽略我们在某些页面上可能拥有的少量图像)。
Android / iOS是否跨浏览器重启缓存js和css?如果没有,那么内联听起来更好。
唯一的目标是最小化用户的平均加载时间。每个用户每天将在该网站上花费约100个页面加载时间,每天查看约40个css和js文件。 CSS和JS基本上是静态内容。它设置为缓存30天,并且如果文件发生更改,则使用
/ path / to / file.ext? md5-hash-of-file
更改url。此外,只要可能,就对所有内容进行了gzip。编辑:
我认为我应该澄清第二个选项中发现的两个选项。在整个网站范围内使用单个文件来保存CSS和JS是否是一个好主意?这只需要两个请求,并删除任何重复(或七重)缓存,因为某个函数位于不同的合并JS文件中的两个或多个文件中,但下载高达1MB的内容听起来并不好。
今天基本上每个视图都有一个组合的CSS,因此每次您再次查看相同的页面时,内容都会被缓存。然而,某些JS和CSS在多个页面上使用。