Php 快速加载网页
我们计划开发一个新网站。我们的目标是加载网页 迅速地。我们需要遵循的所有技术是什么 谁能给我好的建议,论坛链接或文章Php 快速加载网页,php,javascript,mysql,ajax,Php,Javascript,Mysql,Ajax,我们计划开发一个新网站。我们的目标是加载网页 迅速地。我们需要遵循的所有技术是什么 谁能给我好的建议,论坛链接或文章 我们的平台是PHP、MySQL、Javascript和AJAX。加速网站加载时间的最佳指南之一: 更新:谷歌现在也有一个很好的指南 还有一个更好的。到目前为止,在我的测试中,谷歌的页面速度插件远远高于YSlow。它提供了更详细的分析和更明智的建议(而不是为像YSlow这样的小型网站推荐CDN) 使用CSS精灵使您的HTTP请求保持倒计时 确保你所有的图片大小都合适 确保你有
我们的平台是PHP、MySQL、Javascript和AJAX。加速网站加载时间的最佳指南之一:
更新:谷歌现在也有一个很好的指南 还有一个更好的。到目前为止,在我的测试中,谷歌的页面速度插件远远高于YSlow。它提供了更详细的分析和更明智的建议(而不是为像YSlow这样的小型网站推荐CDN)
- 使用CSS精灵使您的HTTP请求保持倒计时李>
- 确保你所有的图片大小都合适李>
- 确保你有一个真正好的主机和良好的上游和下游李>
- 确保您的服务器能够及时执行脚本,您可以使用microtime函数进行检查
- 确保您的代码已正确优化
不过,请参阅Jeff的博客文章,了解关于这个问题的一些观点。尽可能少地编写代码,但不能太少
更少的代码、更少的编译、更少的发送、更少的接收、更少的处理、更少的显示。使用PHP探查器确保代码以合适的速度执行。如果性能可以提高,重构(如果可能)。一些随机点 渐进式渲染,而不是在内存中构建它,并在最后发送,给人一种明显的速度印象 您可以使用一些高级缓存技巧,如前向缓存(Akamai在大规模上就是这么做的)和分离静态和动态内容
特别是对于PHP,在复制大量数据时要小心。PHP4因其“默认复制”而臭名昭著,但在PHP5中仍有大量数据要交,这有点太容易了。换句话说:不要不必要地复制(或创建!)字符串、数组和对象;将它们放在适当的位置,并传递参考信息。除了已经说过的内容之外:
- 模糊和压缩你的css
- 混淆并压缩javascript
- 更少的文件==更少的http请求==更快的站点==将所有css放在一个文件中,将所有javascript放在一个文件中
http://www.yourdomain.com/js/mad_scriptz-v123.js
然后使用mod_rewrite并去掉“-v123”:
# http://www.thinkvitamin.com/features/webapps/serving-javascript-fast
重新启动发动机
重写规则^/(.*)\-v[0-9.]+\(css | js | gif | png | jpg | xap)$/$1.$2[L]
现在apache将寻找“/js/mad_scriptz.js”。。。每次更改静态内容时,只需增加版本号即可强制浏览器重新加载内容。我通常有一个模板变量,其中包含一个全局版本号,所有内容都与此相关。不是最有效率的,但对我来说很有用。如果您可以将版本号绑定到构建系统或文件的散列,那就太好了
让mod_过期,使您的所有静态内容在几年后过期:
<IfModule mod_expires.c>
ExpiresActive On
# all in seconds...
ExpiresByType image/x-icon A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/css A2592000
ExpiresByType application/rdf+xml A1800
</IfModule>
过期于
#都在几秒钟内。。。
ExpiresByType图像/x图标A2592000
ExpiresByType图像/gif A2592000
过期按类型图像/jpeg A2592000
ExpiresByType图像/png A2592000
ExpiresByType应用程序/javascript A2592000
ExpiresByType应用程序/x-javascript A2592000
过期按类型应用/x-shockwave-flash A2592000
按类型申请过期/pdf A2592000
ExpiresByType文本/css A2592000
ExpiresByType应用程序/rdf+XMLA1800
更新:注意到并非所有浏览器或搜索引擎都喜欢gzip的内容。不要像我上面建议的那样盲目地打开它。确保即使他们接受gzip,你也不会给他们提供信息(他们中的一些人会对压缩的javascript感到恼火)。和的文档都有一些示例,它们应该可以很好地工作(我假设它们可以,或者人们会通过电子邮件向它们发送更改:-)
我还应该提到,根据我的经验,如果你在你的mod_gzip的Apache服务器和世界之间有一个反向代理,你需要小心。Squid 2.6通常会欺骗Apache,使其在应该的时候不使用gzip,更糟糕的是,它会缓存未压缩的版本,并将其提供给能够处理gzip内容的浏览器。不知道3.0是否解决了这个问题,我也不知道我的配置中是否有问题(对此表示怀疑)。请注意:-)
也就是说。打开它。严肃地说:-)Yahoo:“将样式表放在顶部”,“将脚本放在底部”
这使我最近的网站比任何其他优化都快。这里有一个我总是觉得有用的提示: 如果你有很多小图像,把它们都放在一个平铺的图像中。在CSS声明中,通过操纵背景的x和y坐标来控制html元素的视口:
.icon {
background-image:url(static/images/icons.png);
height:36px;
width:36px;
}
.food {
background-position:-52px -8px;
}
.icon_default {
background-position:-184px -96px;
}
平铺可以在Python脚本中完成,如果您有一个可管理的集合,也可以手动完成
Gmail也能做到这一点。请参阅:这是一个项目,有助于解决雅虎的一些问题s guidelines()是一种在同一空间中使用小型化、包绑定和有条件HTTP服务,与良好的设计实践结合使用,可以显著减少
.icon {
background-image:url(static/images/icons.png);
height:36px;
width:36px;
}
.food {
background-position:-52px -8px;
}
.icon_default {
background-position:-184px -96px;
}
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?your_Domain_name.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
SetOutputFilter DEFLATE
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 month"
# Javascript
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
zlib.output_compression = On
<?php
if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’))
ob_start(“ob_gzhandler”); else ob_start();
?>
<IfModule mod_deflate.c>
############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
# Insert filter on all content
SetOutputFilter DEFLATE
# Insert filter on selected content types only
AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/xhtml+xml image/x-icon image/svg+xml application/rss+xml application/x-font application/x-font-truetype application/x-font-ttf application/x-font-otf application/x-font-opentype application/vnd.ms-fontobject font/ttf font/otf font/opentype
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>