缓存,CDN-它们对于PHPYII站点是相同的吗?如何将其用于动态php站点?

缓存,CDN-它们对于PHPYII站点是相同的吗?如何将其用于动态php站点?,php,memcached,yii,cdn,cloudflare,Php,Memcached,Yii,Cdn,Cloudflare,我有一个基于动态php Yii框架的网站。用户必须登录才能在站点上执行任何操作。我试图了解缓存和CDN是如何工作的;我有点困惑 缓存memcache: 我的网站有大量的css、js和图像。我已经了解到启用缓存memcache?将大大加快我的网站。但这让我感到困惑。缓存有什么帮助?我的意思是,如何分别为每个用户缓存数据库中的内容?例如,用户1登录时,他会看到自己的控制面板。用户2登录后,用户2将看到其控制面板 如何确定要缓存的内容?另外,如何启用缓存memcaching CDN: 我被告知要使用像

我有一个基于动态php Yii框架的网站。用户必须登录才能在站点上执行任何操作。我试图了解缓存和CDN是如何工作的;我有点困惑

缓存memcache:

我的网站有大量的css、js和图像。我已经了解到启用缓存memcache?将大大加快我的网站。但这让我感到困惑。缓存有什么帮助?我的意思是,如何分别为每个用户缓存数据库中的内容?例如,用户1登录时,他会看到自己的控制面板。用户2登录后,用户2将看到其控制面板

如何确定要缓存的内容?另外,如何启用缓存memcaching

CDN:

我被告知要使用像CloudFlare这样的内容交付网络。它应该自动缓存我的站点。那么,当我的user-1登录时,它会缓存什么?它是否只缓存主页CSS、JS和主页图像?因为其他一切都需要登录?当用户注销时会发生什么?我的意思是,会话是否会干扰CDN的工作

通过CDN提供图像是否会显著降低服务器上的负载?我没有太多的钱来配置集群服务器。所以,我只希望我的共享服务器能够将其所有资源用于处理PHP代码。那么,使用memcache之类的缓存和/或CloudFlare之类的CDN可以节省多少负载呢

最后,

在这个场景中,缓存、cdn和基本性能优化的一般策略是什么?我是否需要对php代码进行任何更改以启用类似于CloudFlare的CDN并启用/实现/配置缓存?我能做些什么来减少开发人员/编码时间并使我的网站运行得更快


哦,等等,我的一些页面,如关于我们的页面等,也将是静态html。但是他们不会得到那么多的点击率。除了可能用于我的Facebook页面的iFrame页面。

Memcached的工作原理是将数据库信息以平面文件格式存储在web服务器的文件系统中,这些信息通常来自远程服务器,甚至来自同一服务器上的数据库引擎。直接访问平面文件以检索以规定格式存储的数据要比每次从远程查询访问该数据快得多。当您的数据可以安全地存储一定时间段时,这通常非常有用,因为它不会定期更改

其工作方式是,如果您希望将用户的帐户信息存储在缓存中,以加速加载该用户登录的页面。您将加载信息并在本地缓存它。在对该数据的任何后续请求中,它将在正常情况下从数据库本身加载该信息所需时间的一小部分时间内加载该数据。显然,如果用户在登录时更改了这些信息,您需要确保更新/重新缓存这些信息,但是如果您实现了一个缓存系统,可以最大限度地减少等待数据库的时间,那么您将大大减少提供页面所需的时间

我个人不熟悉CloudFlare,因此我无法提供任何建议,但在应用程序中实现缓存方面,您应该查看:


然后阅读其中包含安装/实现等内容的其余Wiki条目。Memcached的工作原理是将数据库信息以平面文件格式存储在web服务器的文件系统中,这些信息通常来自远程服务器,甚至来自同一服务器上的数据库引擎。直接访问平面文件以检索以规定格式存储的数据要比每次从远程查询访问该数据快得多。当您的数据可以安全地存储一定时间段时,这通常非常有用,因为它不会定期更改

其工作方式是,如果您希望将用户的帐户信息存储在缓存中,以加速加载该用户登录的页面。您将加载信息并在本地缓存它。在对该数据的任何后续请求中,它将在正常情况下从数据库本身加载该信息所需时间的一小部分时间内加载该数据。显然,如果用户在登录时更改了这些信息,您需要确保更新/重新缓存这些信息,但是如果您实现了一个缓存系统,可以最大限度地减少等待数据库的时间,那么您将大大减少提供页面所需的时间

我个人不熟悉CloudFlare,因此我无法提供任何建议,但在应用程序中实现缓存方面,您应该查看:


并阅读其中包含安装/实施等内容的其余Wiki条目。这些条目应该会让您从正确的轨道开始。

缓存有帮助,因为它不是为每个用户执行磁盘io 数据存储在内存中,即memcached。这大大提高了性能

Memcache通常用于缓存数据即查询结果。 有很多教程

我只使用过AmazonS3,它不完全是cdn。它更像是一个存储平台,但在为媒体服务时,它仍然有助于减轻我自己服务器的负担

我会将您所有的静态资源放在CDN上,这样您自己的服务器就不必提供这些服务。它不需要对php代码进行任何修改。这包括JS和CSS。 对于您的关于页面的静态页面,我会确保php不会处理这些内容,因为没有理由这样做。您的web服务器应该直接为其提供服务

缓存需要对代码进行更改。用于缓存正常流的是: 1用户发出请求 2检查数据是否在缓存中 3如果不在缓存中,则执行DB查询并将其放入缓存中 4如果它在缓存中,则检索它 5返回数据


您可以缓存任何需要磁盘io的内容,您应该会看到速度的提高。

缓存有帮助,因为数据不是为每个用户执行磁盘io,而是存储在内存中,即memcached。这大大提高了性能

Memcache通常用于缓存数据即查询结果。 有很多教程

我只使用过AmazonS3,它不完全是cdn。它更像是一个存储平台,但在为媒体服务时,它仍然有助于减轻我自己服务器的负担

我会将您所有的静态资源放在CDN上,这样您自己的服务器就不必提供这些服务。它不需要对php代码进行任何修改。这包括JS和CSS。 对于您的关于页面的静态页面,我会确保php不会处理这些内容,因为没有理由这样做。您的web服务器应该直接为其提供服务

缓存需要对代码进行更改。用于缓存正常流的是: 1用户发出请求 2检查数据是否在缓存中 3如果不在缓存中,则执行DB查询并将其放入缓存中 4如果它在缓存中,则检索它 5返回数据


您可以缓存任何需要磁盘io的内容,您应该会看到速度的提高。

我实际上为CloudFlare工作&我想我会跳出来解决一些问题

我是否需要对php代码进行任何更改以启用类似CDN的功能 CloudFlare和是否启用/实施/配置缓存?我能做什么 这将花费最少的开发人员/编码时间,并将使我的 网站运行快得多

不,没有什么像需要重新编写URL等。我们自动按文件扩展名。但是,这确实需要更改您的DNS以指向我们

通过CDN提供图像是否会显著降低服务器上的负载

是的,它还可以帮助大多数访问者更快地访问站点,并为您节省大量带宽

哦,等等,我的一些页面,比如关于我们的页面等,将会被删除 还有静态html


默认情况下,CloudFlare不会缓存HTML。您可以为静态HTML之类的内容设置更高级的缓存选项。

我实际上为CloudFlare工作&我想我会跳出来解决一些问题

我是否需要对php代码进行任何更改以启用类似CDN的功能 CloudFlare和是否启用/实施/配置缓存?我能做什么 这将花费最少的开发人员/编码时间,并将使我的 网站运行快得多

不,没有什么像需要重新编写URL等。我们自动按文件扩展名。但是,这确实需要更改您的DNS以指向我们

通过CDN提供图像是否会显著降低服务器上的负载

是的,它还可以帮助大多数访问者更快地访问站点,并为您节省大量带宽

哦,等等,我的一些页面,比如关于我们的页面等,将会被删除 还有静态html


默认情况下,CloudFlare不会缓存HTML。您可以为静态HTML等设置更高级的缓存选项。

谢谢,dm03514和@Brian。我现在了解了缓存的工作原理。但这又提出了另一个问题:每个用户都是不同的,拥有不同的帐户。所以,如果我要缓存查询,那么这些查询只适用于该特定用户!所以,如果我有50000个用户,那么我需要为这50000个用户中的每一个缓存查询。另外,如果结果集被更新怎么办?缓存将显示过时的结果集。很抱歉延迟,我一直在移动lol,它会根据您使用的缓存系统而变化。在大多数情况下,您希望缓存特定于用户且不易频繁更改的数据,例如:帐户数据(如电子邮件地址、名称、首选项等)或不易频繁更改页面内容、用户评论、,等等。如果您决定缓存易于频繁更改的数据,您将无法对缓存的数据使用简单的TTL生存时间过期日期,而是需要在数据更改时手动使其过期。谢谢,dm03514和@Brian。我明白
现在看看缓存是如何工作的。但这又提出了另一个问题:每个用户都是不同的,拥有不同的帐户。所以,如果我要缓存查询,那么这些查询只适用于该特定用户!所以,如果我有50000个用户,那么我需要为这50000个用户中的每一个缓存查询。另外,如果结果集被更新怎么办?缓存将显示过时的结果集。很抱歉延迟,我一直在移动lol,它会根据您使用的缓存系统而变化。在大多数情况下,您希望缓存特定于用户且不易频繁更改的数据,例如:帐户数据(如电子邮件地址、名称、首选项等)或不易频繁更改页面内容、用户评论、,等等。如果您决定缓存易于频繁更改的数据,您将无法对缓存的数据使用简单的TTL生存时间过期日期,而是需要在数据更改时手动使其过期。