【发布时间】:2009-07-29 14:43:38
【问题描述】:
我了解浏览器加载jquery后,一般会添加到浏览器缓存中。
我的网站有数百个页面,并且我有一个包含在这些页面上的头文件,其中只有一些页面使用 jquery 代码,所以我想知道如果我这样做,页面加载速度会更快还是对最终用户有更好的性能不要在不使用它的页面上包含jquery,或者由于它是缓存的,它根本不影响性能吗?
【问题讨论】:
标签: jquery
我了解浏览器加载jquery后,一般会添加到浏览器缓存中。
我的网站有数百个页面,并且我有一个包含在这些页面上的头文件,其中只有一些页面使用 jquery 代码,所以我想知道如果我这样做,页面加载速度会更快还是对最终用户有更好的性能不要在不使用它的页面上包含jquery,或者由于它是缓存的,它根本不影响性能吗?
【问题讨论】:
标签: jquery
如果您的 jQuery 文件被正确缓存,那么如果您不使用它们,是否包含它们基本上都没有关系。无论如何,没有任何显着程度。
“正确缓存”是指带有远期 Expires 标头的版本。
见Supercharging Javascript in PHP。
基本上,如果不包括它们是有意义的,那么就不要(显然)。但是,如果它变得棘手、困难或容易出错,那就不要打扰了。当他们尝试使用不存在的 jQuery 时,您不希望自己在页面上收到错误报告,因为您认为页面不需要它。
【讨论】:
Expires 与If-Modified-Since 混淆。
如果有不需要 jQuery 的登录页面(用户第一次访问您的网站时最终到达的页面,例如您的主页),请不要在其中包含 jQuery。
用户体验会更好;他会认为您的网站更快。一旦 jQuery 被加载一次(当用户浏览你的网站时),在他删除他的缓存之前它就不再重要了。
不过,请确保您的服务器发送正确的缓存标头。
【讨论】:
根据页面的构建方式,您可能希望将 jQuery 放在页面底部。在这种情况下,加载 jQuery 根本不会影响可见性能,您应该可以随意包含它。
【讨论】:
总结其他答案的各种优点,如果您观察到最佳性能实践,例如:
Expires、Last-Modified、ETag 等)</body>)就用户体验而言,影响应该可以忽略不计。事实上,根据使用习惯,包含可能有助于将其在缓存中保留更长时间,并提高整体性能。
【讨论】:
我个人会,因为我知道 jquery 文件将被缓存,而且我只是有范围蠕变,并一直认为客户端会在当前没有任何功能的页面上需要一些功能 - 所以总体上不能如果它已经嵌入到您的绝大多数页面中,那真的会失败......假设这个页面不是独立/登陆页面,在这种情况下我可能会排除它。
【讨论】:
浏览器将在缓存中有 jquery,但它仍会有条件地访问您的服务器以检查它是否没有更改并且不应该更新。在解析<script> 标签时,浏览器将阻止执行此条件获取(希望速度快,但仍需 30-50 毫秒),然后解析并执行 jquery 代码(额外的 10 毫秒)。
如果你对一个额外的请求和 40-70ms 的速度没有任何其他不使用 jquery 的页面感到满意,我认为没关系。
【讨论】: