首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakephp资产管理速度

cakephp资产管理速度
EN

Stack Overflow用户
提问于 2013-07-17 23:05:33
回答 1查看 579关注 0票数 1

我对cakephp很陌生,我在手册中发现了这一点:

众所周知,通过PHP提供资产的速度肯定比不调用PHP的服务要慢。虽然核心团队已经采取措施使插件和主题资产尽可能快地提供服务,但在某些情况下可能需要更多的性能。在这种情况下,建议您使用与CakePHP使用的路径匹配的路径,将插件/主题资产复制到app/webroot中的目录中。 app/Plugin/DebugKit/webroot/js/my_file.js变成app/webroot/debug_kit/js/my_file.js应用/View/主题/海军/webroot/css/Navy.css成为app/webroot/theme/Navy.css

是否需要PHP读取插件/ webroot /asset中的文件,然后插入到HTML中,而不是直接由服务器本身提供服务,因为http模块不能访问webroot目录吗?

手册说,软链接将加快这一进程。cakephp首先查看/app/webroot/asset,然后调用dispatcher在plugin/webroot/asset中找到它,并读取并服务它吗?

或者,如果文件不在app/webroot/资产位置,那么进程是否与文件的查找/读取方式相同,除了蛋糕必须使用dispatcher定位资产?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-18 21:56:24

为了提供文件..。

网络服务器是最快的

默认重写规则如下:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

这意味着如果请求是针对see服务器可以看到的文件-不要与php对话,只需响应文件的内容(或适当的标题)。在这种情况下,没有“cakephp首先查看/app/webroot/asset .”因为在处理请求时根本不涉及CakePHP (或PHP )。

所以,简单地说,那就是:

代码语言:javascript
复制
Request 
-> webserver 
  -> check if file exists
    -> response (file contents)

如果使用的是不同的not服务器(而不是apache),CakePHP需要等效的重写规则。它永远不会检查是否存在相当于app/webroot/<the current url>的内容--因为the服务器本身就应该这样做。

PHP是慢的

如果请求是针对webroot中不存在的文件,则速度要慢得多,因为很简单,涉及的进程更多。甚至像这样的php脚本:

代码语言:javascript
复制
<?php
// example app/webroot/index.php
$path = 'server/this/file.html';
echo file_get_contents($path);
exit;

比由that服务器直接处理的等效请求慢,因为:

代码语言:javascript
复制
Request 
-> webserver 
  -> check if file exists
    -> invoke php 
      -> get file contents 
    -> respond to webserver 
  -> response

Plus php并不是专门为文件服务而设计的(就像webserver是或应该是这样),因此在这样做的过程中比webserver本身慢得多。

CakePHP比较慢

对于CakePHP项目来说,唯一可以直接通过网络访问的路径是‘app/webroot`’。

对于CakePHP处理的请求,甚至使用资产调度过滤器 (这是一个精简的调度过程)--显然涉及更多的逻辑,因此它比使用php服务器文件所需的最低逻辑要慢。简单地说,这一请求是:

代码语言:javascript
复制
Request 
-> webserver 
  -> check if file exists
    -> invoke php 
      -> Bootstrap CakePHP
      -> Dispatch Request
        -> Check Dispatch filters
          -> check if request matches a configured plugin/theme file path
            -> check if file exists
          -> generate response
        -> output response
    -> respond to webserver 
  -> response

与让for服务器处理静态文件可能非常重要的请求相比,性能上的差异。

结论

在没有必要的情况下使用php提供文件是浪费资源,如果有可能的话,允许响应来自更高的请求-- when服务器、代理或者最好是用户自己的浏览器缓存(~0延迟!)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17711779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档