想要让页面瞬间加载。
我的首页加载时间为 1.1 秒,ping 时间为 74 毫秒。类似的(ping 时间为 72 毫秒)英文维基百科页面(实际上在一台使用率很高的主机上,文档大小增加了 40%)加载时间为 0.4 秒。我的网站在一台配备 1 GHz Athlon 的专用主机上,在 APC 下运行 Mediawiki 软件,几乎没有任何流量,而且机器还有一些空闲的核心内存。
有没有办法加快加载速度,或者我可以看看什么?我试过鱿鱼,但没有任何改善。
我使用的测试是time wget url
谢谢。
PS 我问过类似问题,但我认为表述得还不够清楚。
答案1
您必须确定您的瓶颈并将其消除。
- 您的页面是否需要大量的处理能力和数据库时间?
利用缓存技术,例如您提到的 APC、memcached,调整您的 DB 配置,例如,如果您使用 MySQL,请在 my.cnf 中启用查询缓存。
- 网络吞吐量是您的瓶颈吗?
为你的服务器获取更好的互联网连接,在开发时使用 CSS sprites [1] 等技术,以尽量减少下载内容所需的单独 HTTP 连接数(尽可能)。下载并查看 YSlow 对你的站点的评价 [2]。
“YSlow 根据雅虎针对高性能网站的规则来分析网页及其速度缓慢的原因。”
答案2
我们可以整天猜测页面加载速度慢的原因……或者您可以在 Mediawiki 中启用分析。这应该使您能够看到 PHP、APC、Mysql 等生成页面需要多少时间。这应该为您提供足够的数据来弄清楚下一步该怎么做。我确实怀疑,由于您的服务器不忙,所以它没有提供任何缓存服务,因为您是第一个请求者。
答案3
需要考虑的一些事项:
- 您的一些 page_load、page_init(等等)操作可以稍后再进行吗?如果您使用 AJAX,则可以在页面加载完成后立即填充一些数据。
- 如果您浏览未编译的版本,则 IIS 第一次将编译并缓存它。否则它仍将缓存它。不要依赖第一次部署后命中来反映准确的响应时间。
- 将内容从 Default.aspx 移到可行的其他页面。
答案4
Wikipedia 会为未登录的用户缓存所有页面。您看到的是内存中或磁盘上的缓存。登录并加载页面,加载时间会更长。话虽如此,但可以利用大量内存对 MySQL 进行大量调整,使 MediaWiki 运行得相当快。
也可以看看,媒体 wiki 服务器, 和缓存策略。在第一页上,他们声称 Squid 缓存命中率为 78%。他们将渲染的页面存储在一个巨大的 6GB 内存缓存中,并使用 6GB 内存来缓存数据库(缓存命中率为 99%)。
没有这种缓存的默认媒体 wiki 的性能会非常糟糕。Wikipedia 是通过 5 层缓存和内存块组成的 MediaWiki。