缓存网站,使其不会';t重新加载


Caching the website so it doesn't reload

我的网站遇到了一些问题,因为它正在进行大量SQL查询,所以速度很慢,点击页面上的一个元素,整个页面就会重新加载。

以下是一个示例:示例

当您第一次打开页面时,将需要一些时间。然后,当你点击排序选项,如"3Way","Over/Under","Asian Handiap"等。它将再次花费相同的时间,因为页面将与left&右栏和顶部菜单。

但是,如果你再次单击其中一个排序选项,它将非常快,因为页面被缓存。

我希望静态元素(未更改的元素)不要重新加载。如果可能,自动。如果没有,我希望能够手动指定哪些元素被重新加载,哪些元素没有被重新加载。

此外,当在我给你的示例URL上单击"Over/Under",向下滚动到1.75,然后单击"Over 1.75"旁边的小箭头时,页面将重新加载并将你送至顶部。我不希望它排名靠前,但应该在不重新加载页面的情况下对结果进行排序。

如果有人能在这两个问题上提供一些帮助,我将不胜感激,因为我不是很有经验,我只在.htaccess.中启用了未来过期的标头

该网站是用PHP/HTML/CSS编写的,它是一个动态网站,使用查询从3GB SQL数据库中获取所有结果。

如果有人能帮我的话,请提前感谢,尤其是我给出的描述很笼统。如果需要,我可以提供代码,但不知道哪一部分会有所帮助。

您可以使用Varnish来缓存网页。Varnish是一个位于Web服务器前面的HTTP代理。这需要一些时间&配置它的知识,但它是一个非常好的软件。

或者,您可以使用共享内存、memcache或redis将SQL结果缓存在内存中。

为了获得最佳效果,您可以将这两种技术结合起来!

您选择了错误的措辞
于是,那个些只看题目却从不在意题体的普通人就做出了错误的答案。

您不需要缓存,而是需要一些AJAX/Javascript。例如,对javascript来说,按某一列对表进行排序是一项微不足道的任务。请注意,只有当整张桌子都在一个屏幕上时,这才有效。否则,您将重新加载页面。

此外,你提高网站加载速度的想法是完全错误的
首先,对于静态元素,它们是否重新加载并不重要——两者都会很快。其次,优化查询总是一个更好的主意,而不是缓存整个网站。最后,我想说的是,你必须先了解你的网站,找到最慢的元素,然后在速度优化方面采取某些步骤。

  1. 缓存首先取决于您希望向用户显示数据的频率
  2. 调试脚本并检查是否确实需要过多的SQL查询。尽量减少
  3. 避免使用group-by、joins和order-by子句
  4. 检查MySQL索引
  5. 在MySQL中完成所有操作后,开始进行缓存
  6. 缓存数据使用文件,memcache甚至你可以尝试mongoDB