提高Javascript加载时间-串联与多个+;隐藏物
我想知道,对于一个加载了大量javascript(jQuery+jQuery UI+各种其他javascript文件)的页面,以下哪项会带来更好的性能。我已经浏览了YSlow和Google页面速度的大部分内容,但是我对一个特定的细节感到疑惑 对我来说,这里的一个关键点是,我正在工作的网站不在公共网络上;这是一个企业对企业的平台,几乎所有的用户都是重复访问者(因此都有数据缓存,YSlow认为这对于大量访问者来说是不可能的) 首先,YSlow等工具推荐的标准方法是将其连接、压缩,并在页面末尾加载的单个文件中提供。这种方法听起来相当有效,但我认为这里推理的一个关键部分是提高没有缓存数据的用户的性能 我现在的系统是这样的提高Javascript加载时间-串联与多个+;隐藏物,javascript,performance,Javascript,Performance,我想知道,对于一个加载了大量javascript(jQuery+jQuery UI+各种其他javascript文件)的页面,以下哪项会带来更好的性能。我已经浏览了YSlow和Google页面速度的大部分内容,但是我对一个特定的细节感到疑惑 对我来说,这里的一个关键点是,我正在工作的网站不在公共网络上;这是一个企业对企业的平台,几乎所有的用户都是重复访问者(因此都有数据缓存,YSlow认为这对于大量访问者来说是不可能的) 首先,YSlow等工具推荐的标准方法是将其连接、压缩,并在页面末尾加载的单
- 所有javascript文件都在页面底部进行压缩和加载
- 所有javascript文件都有很长的缓存过期日期,因此(对于大多数用户)将在缓存中保留很长一段时间
- 页面只加载所需的javascript文件,而不是加载一个单一的文件,其中大部分都不是必需的
- 如果有许多标记,但所有文件都是从本地缓存加载的,并且总体上加载的javascript较少,那么这是否会比同样从缓存加载但包含站点上任何位置所需的所有javascript而不是适当子集的标记快
- 有没有其他理由选择其中一个而不是另一个
- 类似的想法是否适用于CSS?(我目前正在使用一种更加单一的CSS方法)
- -博客帖子
- -GC的性能
- -关于javascript的一些提示
- 我肯定会采用非整体式方法。不仅在您的情况下,而且通常在您需要更改或重新配置某些内容时,它会为您提供更大的灵活性
如果对其中一个文件进行更改,则必须合并压缩和交付。如果你是以自动化的方式做这件事,那么你就没事了
至于浏览器的问题“如果没有达到javascript文件的缓存过期日期,则立即使用缓存版本;根本没有向服务器发送HTTP请求”,我认为存在HTTP请求,但响应为“未修改”。为了确保您应该检查向Web服务器发出的所有请求(使用可用的工具之一)。给出响应后,浏览器使用未修改的资源—js文件或图像或其他
祝你的B2B好运。你尝试过谷歌关闭吗?从我所读到的情况来看,这似乎很有希望
PS:使用不同的方法在不同的浏览器上对其进行分析并编写,因为它对那些同样使用缓慢的JS引擎(如IE6:)的用户非常有用,包括删除临时缓存文件以“加速计算机”的隐私和性能工具 合并和缩小脚本不必是一个繁重的过程。我在单独的文件中编写JavaScript,这些文件间隔很好,便于我阅读,因此更易于维护。但是,我通过一个脚本页面提供服务,该页面将所有脚本组合成一个脚本和一个min
javascript( 'jquery', 'jquery.ui', 'home-page' );
<script type="text/javascript" src="/js/?files=eNptkFsSgjAMRffCP4zlTVmDi4iQkVwibbEUHzju3UYEHMffc5r05gJnEX8IvisHnnHPQN9cMHZeKThzJOVeex7R3AmEDhQLCEZBLHLMLVhgpaXUikRMXCJbhdTjgNcG59UJyWSVPSh_0lqSSp0KN6XNEZSYwAqt_KoBY-lRRvNblBZrYeHQYdAOpHPS-VeoTpteVFwnNGSLX6ss3uwe1fi-mopg8aqt7P0LzIWwz-T_UCycC2sQavrp-QIsrnKh"></script>
$compressed_js_file_path = $_SERVER['DOCUMENT_ROOT'] . '/cache/js/' . md5( implode( '|', $js_files ) ) . '.js';
if( file_exists( $compressed_js_file_path ) ) {
echo file_get_contents( $compressed_js_file_path );
} else {
if( $fh = @fopen( $compressed_js_file_path, 'w' ) ) {
fwrite( $fh, $js );
fclose( $fh );
}
// Echo the compressed Javascript
echo $js;
<html>
<!-- all your HTML content... -->
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script src="mycode.js"></script>
<html>
<!-- all your HTML content... -->
<script>var startTime = new Date().getTime();</script>
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script src="mycode.js"></script>
<script>
var endTime = new Date().getTime();
var totalTime = endTime - startTime; // In milliseconds
new Image().src = "/time_tracker?script_load=" + totalTime;
</script>
// Set up caching on media files for 1 month
<FilesMatch "\.(gif|jpg|jpeg|png|swf|js|css)$">
ExpiresDefault A2629744
Header append Cache-Control "public, proxy-revalidate"
Header append Vary "Accept-Encoding: *"
</FilesMatch>
// compresses all files for faster transfer
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml font/opentype font/truetype font/woff
<FilesMatch "\.(js|css|html|htm|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>