我们在专用服务器上有一个网站。以下是服务器设置:
- 正品英特尔,英特尔 (R) Core (TM) i5-2400[电子邮件保护]
- 版本 Plesk v10.3.0_build1012110629.18 os_Ubuntu 10.04
- 操作系统 Linux 2.6.38.2-xxxx-std-ipv6-64
- 内存总量 16Gb
本网站(http://www.bobcat.pro) 是一个由 18000 个类别和 300000 个产品组成的电子商务网站。全部运行在 PHP5 / MySQL 上。
正如您在浏览时看到的,页面显示需要 5 秒(或更长时间),这太长了。我正在寻找一种与我们服务器的安装兼容的减少显示的方法。
我曾经使用过 varnish,但体验上的问题太多,无法重试。您有什么推荐?google 的 page_speed 模块适用于 apache 2,是一个好的解决方案吗?
答案1
答案2
电子商务应用程序的供应商可能能够给出最好的答案。
从表面上看,它似乎希望在 HTTP 响应中添加某种缓存控制标头 - “Expires”标头或“Etag”。但是,您不一定想在任何地方添加这些,否则您可能会破坏某些东西,而用户确实需要全新的视图而不是转到缓存。
实际上,电子商务应用程序不调整这些标头是一种犯罪行为(知道缓存何时“过时”是应用程序最了解的事情)。我会寻找一个不同的。
此外,根据单个请求所需的时间判断,应用程序似乎无法处理您强加给它的类别和产品数量。它们可能执行一些涉及“表扫描”(大量磁盘 I/O)的 SQL 查询,或者执行一些涉及数据库内存中非常大的工作集的复杂查询(例如,对 300,000 条记录进行排序)。MySQL 数据库中的索引有时可以帮助解决这些问题,但同样,如果应用程序的安装程序添加这些索引会更好,因为首先需要知道应用程序可能发出哪些查询,然后才能针对这些查询优化数据库。另一个迹象表明您为这项工作选择了错误的电子商务应用程序。