我们的一台服务器面临着性能问题,该服务器托管着一个每月约有 5 万名用户的网站。
我们一直在讨论提高性能的不同选择,目前正在使用 Akamai 的反向代理服务,通过从其全球服务器提供缓存页面和资源来释放服务器负载。
通过这样做,我们开始遇到动态驱动页面上的缓存的一些问题,例如“用户 A 尝试登录但页面呈现为好像用户 B 已登录”之类的问题。
Akamai 可以添加例外情况以允许某些页面不被缓存,但问题是我们正在运行 joomla,并且在构建此网站时,他们没有启用 Pretty URL,因此所有内容都经过 index.php 并且 Akamai 无法添加包含查询字符串的例外情况(index.php?var=val)。
当前的url样式是这样的:/index.php?option=com_content&task=blogcategory&id=618&Itemid=1123
为了向 akamai 添加例外,我们必须启用漂亮的 URL,但该网站非常庞大,并且有很多带有相关资源的内容 (img src="templates/....jpg"),因此如果我们启用漂亮的 URL,该网站的图像和资源将会中断(我们必须修复所有内容)。
你们还有其他想法吗?也许我们没想到,而你们想到了?
你们当中有谁使用过 Akamai 缓存服务吗?
答案1
这里有很多令人困惑的信息,且大多无关紧要。
页面要么应该可缓存,要么不应该。服务器负责告诉世界其他地方哪些内容是可缓存的。是的,Akmai 可以尝试解决您的一些问题 - 但实际上您应该尝试自己解决这个问题。
我们开始遇到动态驱动页面上的缓存问题
那么要么您告诉 Akmai 忽略您提供的缓存信息,要么您没有提供正确的缓存信息。
我对 Joomla 不太熟悉,但据我所知,使用现成的东西,你唯一的选择是打开/关闭浏览器端缓存或启用视图/模块的服务器端缓存。因此,在这个粒度级别,你无法有效地控制缓存。即使这样,控制级别也非常基础。
解决此问题的唯一方法是重新实现 Joomla 的大部分功能以允许细粒度缓存,或者在 Joomla 前面实现您自己的代理和代码以在适当的情况下覆盖默认策略。