【问题标题】:How is my/the user's web browser displaying a web page built in Perl?我/用户的网络浏览器如何显示在 Perl 中构建的网页?
【发布时间】:2022-01-20 15:33:51
【问题描述】:

这不是一个特定的编程相关问题,而是一个概念/软件工程相关的问题。

我是当地一家小型公司的一名新招聘的网络开发人员,我得到了一个非常棒的机会来学习和成长为一名专业人士。他们很友好地给了我一个机会,我想尽可能多地积极学习他们的后端系统是如何工作的,考虑到这是我大部分时间都在做的事情。

根据我收集到的信息,他们整个内部构建的工作跟踪界面都是用 Perl 构建的(将借助 css、js 和 sql),其中 html 页面根据用户的需要生成并吐出访问它们。

例如,如果我想访问一个特定的工作,它会在用户的 url 中看起来像这样。 https://tracking.ourcompanywebsite/jobtracker/job/1234

在内部,我知道我们有一个“查看”脚本,它会被称为“JobView”,它会从字面上查询 perl 脚本中的所有字段,并围绕我们请求的数据构建一个 html 页面.

我的问题是,这是怎么回事?用户在 url 上输入该地址如何触发 perl 脚本在我们的服务器上运行,并生成一个向用户吐回的页面?

我想这是我的主要好奇心。在你大学里的普通基础网络开发课程中,我学会了制作你的 html、css 和 js 文件。当你想查看一个网页时,你只需把那个 html 页面的目录放进去,它就会围绕它构建一切。

当您在浏览器中将目录放入 perl 文件时,它只会打开原始 perl 代码哈哈。

我确信我们的软件中可能有一些模块和各种插件可以让这一切正常工作,我可能会遗漏,所以请原谅我。

我知道你们面前没有代码库,但我认为从概念上讲,有一些东西需要学习,不一定需要所有细节。

我希望这个问题可以用于任何其他有相同问题的业余开发者。

【问题讨论】:

  • Web 服务器收到请求,查看其配置以了解它应该如何处理。如果配置说“发送文件”,它会发送一个文件。如果它说“运行一些 perl”,它运行一些 perl。

标签: perl web


【解决方案1】:

考虑以下两个sn-ps:

cat file | program
printf 'foo\n' | cat | program

在第一个 sn-p 中,cat 从文件中读取其输出。第二,它从另一个程序中获取它。但是program 并不关心这些。它只是读取提供给其 STDIN 的任何内容。

网络浏览器就像program。它不关心网络服务器从哪里获得 HTML 或图像或它请求的任何内容。它发送一个 URL,并从 Web 服务器接收带有文档的响应。

网络服务器,如cat,可以从多个来源获得它需要的东西。具体来说,它可以配置为以几种不同的方式获取请求的文档。

“默认”是将 URL 映射到目录并返回在那里找到的文件。但这不是唯一的选择。 Web 服务器中通常还有另外两个主要选项:

Common Gateway Interface (CGI)

某些网络服务器可以配置为根据收到的 URL 运行程序。有关请求的信息被传递给程序,该程序的任务是产生响应。 Web 服务器只是将该程序的输出返回给请求浏览器。

FastCGI

为每个请求生成一个新的孩子可能会非常浪费。 FastCGI 允许 Web 服务器与现有的持久进程或进程池对话,这些进程池侦听来自 Web 服务器的请求。同样,Web 服务器只是将此请求的响应返回给请求浏览器。

【讨论】:

    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多