当网页实时生成时,它使用服务器端或客户端内存


when a webpage is generated in real time which memory it uses server-side or client side?

我写了一个php代码,它将从数据库中获得一个id,并使用该id,它将使用其他网站提供的一些API,并生成一个页面。

这里我的问题是这个生成的页面将占用服务器或客户端机器上的空间?

如果10000个人打开同一个页面,那么在这种情况下我的服务器会变慢吗?

我应该把API的所有数据存储在mysql数据库中吗?

什么能让它变快&安全…

请建议我…

谢谢

我写了一个php代码,将从数据库和一个id使用该id,它将使用其他网站提供的一些API生成一个页面。这里我的问题是,这个生成的页面将占用空间上在服务器上还是在客户机上?

如果您只从数据库中获取一个id,则生成的页面将出现在客户端上。为此,您可以首先使用jquery。Get从服务器获取id。接下来,您可以使用JSONP(带填充的JSON)从其他API获取数据。但要实现这一点,API当然需要支持JSONP,因为javascript客户端不能使用jquery获取数据。因为同源策略,但幸运的是,JSONP可以用于此。最后,您可以使用.html轻松地将数据附加到DOM。您应该小心使用其他API,并需要确保这些API是安全的,否则您将容易受到XSS的攻击。如果你不确定,你应该用。text代替。

我应该把API的所有数据存储在mysql数据库中吗?

这取决于API是否提供JSONP。

什么能让它变快&安全…

  1. APC缓存编译字节码。这将大大加快你的网站,甚至不改变你的代码库中的一行。
  2. 在内存数据库中作为redis或memcached。您还可以使用APC在内存中存储数据。这将大大加快你的网站,因为触摸光盘(旋转光盘到正确的扇区,等)是非常昂贵的,使用内存是非常快的。无框架的方法将使您的网站速度快,因为PHP是动态语言,你应该尽量少做。
  3. 只处理低挂的果实。记住"过早优化是万恶之源"。Rasmus Lerdorf在DrupalCon 2008的这个视频中教你如何做到这一点。这些幻灯片可以在PHP的演讲部分找到

安全
    阅读OWASP top 10
  1. 使用过滤器保护XSS
  2. 使用PDO(预处理语句)防止sql注入。
  3. 保护CSRF

这完全取决于您的垃圾收集。当页面呈现时,内存将被服务器使用,但是一旦输出发送到浏览器,PHP将不再关心。现在,如果垃圾收集非常糟糕,Apache肯定会耗尽内存。它有内置的垃圾收集协议,但是如果你依赖这些协议,你只会请求丢弃数据包和页面挂起。

如果10000人同时访问您的服务器,很可能是您的CPU将成为瓶颈。

这就是为什么可靠的PHP框架是大型项目的理想选择,因为它们中的大多数都考虑到了这一点,并且有内置的优化实现。

这得看情况。因素:-

  1. 生成请求响应所需的时间
  2. 请求大小
  3. 并发连接
  4. Web服务器
  5. api的速度

和更多…如果在一段时间内发出10000个请求,服务器不太可能变慢,但如果每秒发出10000个请求,那么可能会产生影响,这取决于给定的列表。如果有更多的并发连接到服务器,那么每个连接将使用一些内存,内存溢出可能会使服务器停止。所以即使你有很多请求,也要确保这些请求的服务速度很快,它们的连接和进程不会在内存中保存很长时间。这样可以节省内存,避免服务器崩溃。

然而,如果api的输出对于不同的用户来说是相同的,那么将对象保存在内存中会更明智,因为内存访问比磁盘访问快得多。

如果10,000人将抓取您通过操纵另一个站点的API动态创建的同一页面,那么听起来您正在从另一个站点提取数据,并在服务器上使用PHP构建页面。因此,每次访问都会消耗系统上的少量内存和处理资源。内存的使用可能会受到web服务器允许使用的线程或分支数量的限制。处理能力不会受到人为限制;这将受到服务器处理能力的限制。

但是回到10000人抓取同一页面的数字,再次。如果有这种可能性,您可以希望在本地生成页面,并以某种方式缓存它,以便只生成一次。当您可以生成一次相同的输出并让它被获取10,000次时,生成10,000次相同的输出是没有意义的。然后就变成了判断缓存何时过期的问题。