我一直在开发基于drupal的个人主页。我注意到,经常加载6-10秒需要花费很长时间。
在查看了一些性能测试之后,特别是来自site-perf.com的测试,我注意到加载时间是80%的队列时间。
似乎lightbox2和我的主题贡献了大约2/3的排队时间。
有什么建议可以加快速度吗?
发布于 2011-06-27 07:29:35
记住在根目录下的.htaccess文件中缓存和压缩文件。如果没有,则创建一个,然后添加以下代码片段:
#GZIP ----------------------------
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ifmodule>
#CACHE ----------------------------
<ifModule mod_headers.c>
# MONTH
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
# WEEK
<FilesMatch "\.(js|css|pdf|txt|mp4|m4v|ogv|webm|ogg)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
# DAY
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
# NEVER CACHE
<FilesMatch "\.(pl|php|cgi|spl)$">
Header set Cache-Control "max-age=0"
</FilesMatch>
</ifModule>
一旦你缓存和aren,尝试组合任何不是并行加载的文件。如果您发现一个文件在开始下载之前正在等待另一个文件加载,那么如果可能的话,将这两个文件合并为一个文件。
发布于 2011-06-27 07:09:21
当您将javascripts添加到页面(如lightboxes或任何其他插件)时,请确保通过将它们添加到页面底部而不是添加到页面头部来延迟解析它们。
在渲染网页之前,浏览器会解析头部中的任何东西,所以把任何不需要的东西都放在头部,比如lightbox include或其他你在头部包含或编写的自定义脚本,并在关闭body标签之前包含它们。
我还注意到其中包含了8个js文件(以及大量的CSS文件),您可以通过将所有这些javascripts的代码放入一个单独的js文件(以及将所有CSS放入一个单独的文件中)并仅包含该文件来缩短渲染时间。
注意,确保将CSS放在页面的头部,因为正确呈现网页是必要的。
发布于 2011-06-27 07:10:44
引用上述http://site-perf.com/网站的内容:
请求正在队列中等待
通常,浏览器不会一进入队列就开始处理http-request,从而防止web服务器过载。存在每个主机的并发连接限制和所有连接的总限制。这些限制因浏览器而异,目前的通用值为每台主机8-10个并行请求,总共32-128个。
提示:如果您看到许多请求在浏览器队列中花费了大量时间,您可以考虑增加为这些请求提供服务的主机数量。您甚至可以创建指向相同IP并从相同目录提供服务的域名别名,因为浏览器在应用连接限制时只会查看域名,而不会查看其IP。但请记住,每个附加域都会添加相应的解析和连接延迟,因此3-6个这样的别名就足够了。
你可以尝试像并行模块http://drupal.org/project/parallel这样的东西,看看这是否会为你加快速度。或者,如果你想要更多,并且感觉有点冒险- CDN - http://drupal.org/project/cdn
我假设你已经聚合了所有的CSS/JS?是否已启用缓存?
https://stackoverflow.com/questions/6487226
复制相似问题