如果来自同一页面的另一个请求,如何已经加载由服务器处理的PHP脚本

时间:2013-07-07 14:45:38

标签: php http-request

我是真正的初学者,并尝试了解事情如何发挥作用,然后开发东西,现在我无法前进,直到有人给我一个关于下一个问题的一些细节的准确答案。

我们假设有一个包含php代码http://example.com/blablabla的页面,其上的链接就像http://example.com/blablabla?file=number_1一样用于修改此页面的某些部分 我真正不知道的是当来自此页面的请求时,来自http://example.com/blablabla的已加载脚本会发生什么 - http://example.com/blablabla?file=number_1

问题实际上是:  每次请求?file=number_1时是否处理已加载页面的代码? 对我来说这似乎很奇怪,'因为如果第一个http://example.com/blablabla通过php我选择了例如来自数据库的大量数据并且只想用?file=number_1修改页面的一小部分,为什么我需要服务器再次处理对数据库的请求。

我的经验告诉我服务器再次处理已加载的代码, 但根据这个我有一个非常轻微的假设,我不是很确定这一点,但它似乎很合乎逻辑:

真正的诀窍是第一页中的代码有一个VARIABLE,其值已更改 通过第二个请求,所以我假设服务器看到此更改并仅使用此VARIABLE修改代码的那部分 - 例如http://example.com/blablabla中的代码看起来像这样

<? 

 /* some code above */

if (empty($_GET['file'])) {
/* do smth */
} else {
/* do smth else */
} 

 /* some code below */

?>

使用请求http://example.com/blablabla?file=number_1,服务器仅处理原始代码的一部分,仅包括已更改的$_GET['file']变量。

这完全是我的想象还是以某种方式说明了一点? 请有人向我解释一下。非常感谢。

3 个答案:

答案 0 :(得分:0)

HTML是一种静态语言。有php和其他类似的语言允许你有动态页面,但因为它仍然必须以html格式发送所有内容,你仍然需要获得一个新的页面。

?file=number_1只是向页面发出get请求,为其提供更多信息,但页面本身仍然需要重新运行才能更改信息并重新发送新的静态html页面。

可以使用PHP或其他类似语言中的更高级编程来缓存数据库查询,以便服务器不必重新查询数据库,但页面本身仍然必须完全重新运行

有更多高级方法允许客户端操作数据,但是从您的示例中我相信页面正在服务器端重新运行get请求并且正在发送新页面。

我相信这就是你的要求。

答案 1 :(得分:0)

是的,谢谢你们俩。它肯定澄清了每个脚本(干净的html或由php生成)每次请求都运行的问题,并且只有外部类型的数据,如图像文件,甚至从前面的答案中可以看出,mysql结果可以缓存并且是通过php使用来输出必要的数据。

主要的一点是,我错误地希望如果页面被加载并因此缓存在计算机内存中,附加的QUERY STRING到此URL将发送新的get请求,但检索到的响应将部分影响此页面完全重新运行。
现在我必须重新考虑我的构建策略 - 从每个请求的URL加载尽可能多的数据。

答案 2 :(得分:0)

如果您正在寻找动态编辑页面的方法,请使用JavaScript。 如果您需要运行代码服务器端,无形地运行客户端,请使用PHP。 如果您需要动态加载内容,请使用AJAX,这是JavaScript的扩展。

我希望有所帮助。