我想知道在LAMP堆栈上构建典型站点时如何优化它以获得最佳加载时间.我正在描绘一个典型的数据库驱动的网站.
这是一个高级别的外观,可能会引起问题,让我将其分解为堆栈的每一层.
L - 在系统级别,(设置和文件系统)可以提高速度吗?我能想到的一件事是图像尺寸,这里的压缩可以帮助优化任何东西吗?
答 - Web服务器中必须有大量与站点速度相关的设置.不是我的Forte.可能很大程度上取决于并发运行的站点数量.
M - MySQL在数据库驱动的站点中,DB性能是关键.是否有更好的规范化方法,即使用链接表?Web开发人员通常只生成类似1NF的简单单片表,这可能会破坏性能.
P - 除了缓存等性能提升设置之外,程序员可以做些什么来影响高级别的性能?我真的很想知道MVC设计方法是否比快速和肮脏更能达到性能.其他简单的提示比像饼干更快的会话会很有趣.
显然,你必须深入了解细节并找出哪些代码会降低你的速度.此外,我意识到许多站点具有许多不同的性能特征,但让我们假设一个典型的站点有更多的读取然后写入.
我只是想知道我们是否可以编译一堆最佳实践并完全希望人们链接其他问题,以便我们可以有效地处理清单.
我的目标是看看即使除了性能中的常见问题之外,我们还可以看到一些你可能没想到的奇怪的事情,以及最佳实践摘要.
所以我的问题是,如果你是从头开始,你将如何确保你的LAMP网站快速?
我想知道是否有人优化他们的网页,以便在用户禁用Javascript时有一些友好的行为.在这种情况下是否有任何技巧可以提供一些伪脚本行为?我说的是在新窗口中打开链接等基本内容.我想如果没有Javascript,你仍然可以做很多事情.在某些情况下,有一个页面具有一些可以依赖的功能,这可能很方便.有没有做法?
编辑:到目前为止的好答案!人们是否会介意包含一些示例代码(来吧,HTML太容易了!)因为我认为我还没有在SO上看过这样的问题.
有没有人有代码来查找包含正则表达式的文件?我想你可以有两种不同的口味,一种用于BRE,一种用于ERE.
你会认为某种测试套件会有像isRegex()测试那样的东西.任何人都可以有任何代码?当然,寻找一些全面的东西.
我看到这里讨论了这个,但没有看到任何实际的回应.如果我想grep任何包含正则表达式的文件,可能是以典型的//为界,我该怎么做?
我问这个问题,因为我知道这里有很多读得很好的CS类型可以给出一个明确的答案.
我想知道是否存在(或正在研究/开发)这样的AI,它通过生成和编译代码来编写程序,然后通过从以前的迭代中学习来进行.我正在谈论努力使我们,程序员,过时.我正在想象通过反复试验来学习编程语言中哪些有效和哪些无效的东西.
我知道这听起来像是在天空中,所以我要求找出已做过的事情,如果有的话.
当然,即使是人类程序员也需要输入和规范,因此这样的实验必须具有精心定义的参数.就像AI要探索不同的计时功能一样,必须明确定义这个方面.
但是,通过复杂的学习AI,我很想知道它可能会产生什么.
我知道计算机有很多人的品质无法像我们的判断,品味和偏见那样复制.但是我的想象力喜欢一个程序的想法,这个程序在经过一天的思考后会吐出一个网站,让我看看它是什么产生的,甚至我常常认为它是垃圾; 但也许每天一次我可能会给它反馈并帮助它学习.
这个想法的另一个途径是提供像"菜单网站"或"图像工具"这样的高级描述会很好,它会产生足够深度的代码,这对于我来说代码完成模块是很有用的.细节.但我想这可以设想为非智能静态分层代码完成方案.
这个怎么样?
computer-science artificial-intelligence machine-learning genetic-algorithm
我作为PHP程序员在网上商店工作.大多数情况下,我们使用良好的编码实践,但整个网站的结构不多.
我现在已经进入了对我们的一些实践感到厌倦的阶段,并希望以一种有用的方式扩展和简化并生成一些东西,不仅对我而言,还有办公室中的混合程序员Web开发人员.
一位员工给我们留下了一个用PHP编写的MVC网站,我不得不维护它,我得到了它的工作方式,但有我的抱怨,我的主要抱怨是它与每件依赖于另一件的紧密耦合.我看到了分离问题的优势,但除了我看代码之外,任何人都会感到困惑.
因此,例如,如果我需要向网站添加新页面,我必须添加视图,然后添加模型,然后更新控制器.制作新页面的特殊方法比这简单,并且不需要程序员.
我的判断是,这是一个更好的方法来构建,而不是维护一个网站.
不过,如果我有一些设计模式,我可以有效地重用代码,而不依赖于网站中的多个位置,那将是很好的.
所以我的问题是,是否有一种用于构建和维护更松散耦合的网站的设计模式?我不是在寻找MVC上的细微变化,我需要看一些不同的东西,也许某种类型的插件方法.
编辑:
谢谢你到目前为止的答案!一种不同的方式是我希望代码在我的办公室里做得更好.做IA)推动MVC或B)找到/构建一个替代方案,而不是让半程序员感到困惑.我们已经使用类来连接数据库连接和表单帮助.这个问题的关键是探索B.
我在网址中使用"https"查看了一个页面,其中还包含了从youtube播放视频的YouTube网址.由于youtube网址包含'http'而没有's',IE会给出一个警告对话框"此页面包含安全和非安全项目".
有没有办法在Javascript中解决这个问题?也许在页面加载后生成具有函数的youtube播放器HTML?网址仍然必须以'http://'开头
编辑:感谢大家到目前为止的输入!我知道这听起来不可能.如果有一些条件评论或其他什么我会很高兴,我可以告诉IE压制此对话框.它使我们的客户感到困惑,因为世界上大部分地区都在IE中,FF有更好的行为,因为它告诉你是否点击了破锁,而不是烦人的popoup.这就像是"你的程序执行了非法操作"的新版本.(用户隐藏警察)我正在将youtube视频嵌入到src来自youtube的页面上.我正在使用他们的播放器,因为它是由他们托管的.我看不出这个.
我想我的修复方法是只将HTTPS应用于非常敏感的页面(密码更改,登录),并在其他所有页面中使用HTTPS,因此youtube视频不会提供此弹出窗口.我是PHP的,我担心如果我这样做,SESSION会遭到破坏,但我想这是唯一的方法,并将等待星期一解决这个问题.
我主修了一个很棒的软件工程课程,并教授了过程的重要性和生命周期模型的步骤.我熟悉经典的"瀑布"模型.虽然我们探索了其他人,但无论您的新时代模型多么狡猾或狡猾,瀑布都能很好地列出可能的任务.所以这是一个很好的起点.
当我完成学业时,.NET正在崛起,因此我们没有采用一种良好的生命周期模型来探索Web开发的新方法.现在我在网上商店工作,我们正在尝试建立一些我们没有的良好实践和流程.由于我只在6年前毕业并且在更有条理的软件环境中有经验,所以我就是介绍一些新东西的人.
现在办公室只是混乱.昨天我从一位项目经理那里得到了很多笑声,告诉他"我们的过程就是单手拍手的声音." 我们迫切需要进程,但我们不知道该怎么做.当我们应该首先收集需求时,每个人都采取向后的方法,想要一个工具来告诉他们如何做事.
我们是一个共9人的商店.我们需要能够快速完成工作.现在有哪些优秀的软件开发模型是行业标准?其他人都这样做,所以我们需要学习,这家店自1995年以来一直在建设网站.我在哪里可以找到最佳实践的良好资源?我们是一家LAMP商店.
编辑:我还应该补充一点,我们希望在现有网站上添加一个流程.因此,我们不会建立新的项目,这些模型总是面向这些项目.我们正在维护10年前的网站怪物(确定更像是3 - 5年,但客户年龄更大)并保持它们继续前进,同时逐步增加新功能.这有什么帮助吗?
我知道如何使用日期格式字符串,将其转换date('Y/m/d H:i:s');为2009/12/18 11:37:45.
我想要一个可以执行相反操作的函数 - 查看格式化日期然后返回格式。PHP中有吗?
原因是我们的数据库中保存了各种格式的时间戳,我正在编写一个工具来处理所有旧表并分析日期条目。
编辑:所以我想没有一种直接的方法可以做到这一点。我想我可以使用 strftime(),它返回自纪元以来的时间(以秒为单位)。所以更好的问题是我可以在 mySQL 数据库的时间戳字段中使用该时间(以秒为单位)吗?我猜想如果表的结构是时间戳而不是 varchar(有时是这样),那么这会起作用。
好吧,我不希望这是一个黑客建议问题,所以请不要为此投票.我在网上商店工作,我发现一些旧的PHP页面容易受到用户名中的SQL注入攻击,并想知道有多糟糕.
我们使用PHP字符串在登录表单上嵌入来自POST的用户输入.
$uname = $_POST['username'];
$pass = md5($_POST['pass']);
$sql = "SELECT * FROM users WHERE username='$uname' AND password='$pass' AND userlevel='user'";
...
Run Code Online (Sandbox Code Playgroud)
然后我运行查询.
现在,我不是SQL专家,我只是在phpMyAdmin上使用我可以拼凑的内容.但我能够在没有用户名的情况下登录,而不是使用:
' OR 1 '
Run Code Online (Sandbox Code Playgroud)
我知道要逃避用户输入,我使用mysql_real_escape_string.
我的问题是,这段代码有多脆弱,有人可以登录这个页面而不需要密码吗?我想也许他们不需要用户名,但只能强制密码.但我不是SQL大师,我想知道是否可以使用一些技巧来对付我们.
我们使用MySQL.
请不要在输入验证方面做任何讲座,我知道这有多糟糕.我们应该做很多事情,比如我们页面上的超时和锁定,所以不能强行逼迫.
我希望将输入字符串与我的PHP页面匹配,就像SQL(MySQL)中的LIKE命令完成匹配一样,以保持其他搜索的一致性.从(我已经看到但不理解)一些PHP语法包括SQL命令我想知道这是否可能?
这样做的原因是我现在正在实现搜索关键字与数据库中存储在序列化数组中的字段,我必须在PHP中进行反序列化并根据数组的结构进行搜索.我无法查询表,只需要查询的匹配能力.否则我需要找到一个替代的匹配例程,这将不一致.我无法返回并重新构建数据库,因为这不是预期的方式回到规范中.是的,我需要一个丑陋的黑客,但我正在寻找最优雅的.
如果不可能,我可以使用任何将用户键入的文本作为关键字与存储文本匹配的建议.
编辑(澄清):我的主要问题是我没有彻底掌握LIKE命令如何工作(只是复制代码),并且由于关键字意味着某种程度的模糊性,如果我切换到关键字,我希望保留这种模糊性一个正则表达式.正如我所说的那样,正则表达式并不是那么好.我的查询是"LIKE'matmeme%'"
我使用MFC为GUI按钮编写了C++事件驱动的应用程序,我使用像onmousedown这样的HTML事件来触发网页中的一些Javascript.当您使用接口并且事件是硬编码时,事件驱动编程的想法是直观的.
我知道如何在C中使用函数指针,我看到Windows如何使用它们来运行事件循环.我可以编写代码来动态调用不同的函数.
我的问题是,从编译时转移到运行时.我在这里谈论任何语言,但如果您需要一种语言,请选择Javascript或PHP,因为我最近使用它们.我完全没有掌握如何使用自己的事件对象来完成任务.这不是我得到的概念.由于我不使用它们,我不知道它们的实际用途是什么.
例如,我想如果我想制作一个自定义的回合制游戏,那么我可能会使用事件对象来表示一些只需要"发生"的游戏片段能力的效果.
有人能给我一个简单的自定义事件吗?或者有用或实用的情况?它在很大程度上取决于语言和环境以及如何处理事件?一个Javascript答案会很好,但我读了很多语言.
对不起,我只是缺乏这方面的东西,需要一些实用,先进(中级?)的见解.它就像是C中的指针.我"得到"指针以及它们是你的朋友.但有一段时间我没有,而我认识的许多人仍然没有.一旦你得到它就很简单,我就是不会那样获得自定义的动态事件.
我们使用 Sajax 向站点添加小型 Ajax 代码。在遇到问题并进行一些挖掘后,该库似乎自 2005 年以来就没有更新过。
我很欣赏 Sajax 的轻量级、易于使用且易于安装(只需将文件包含在 PHP 中)。
那么,在 LAMP 堆栈上,如果您以前使用过 Sajax,您会升级到什么?易用性是关键,因为一些半程序员 Web 开发人员也使用该代码。
我知道很多人会说 jQuery,但这真的像 Sajax 一样简单吗?
我正在构建一个AJAX页面,当用户单击一个框时,它会发送一个ajax请求并返回一个结果.这是一款非常简单的游戏.用户反复单击该框,我需要记录每次点击之间经过的时间,精确度为毫秒.实际上,根据我的请求,我将发送自上次请求以来经过的时间并将其存储在数据库或会话中.
Javascript确实有一个精确的毫秒计时器,对吗?那么jQuery是否能够轻松完成点击之间的时间任务?
php ×8
javascript ×5
lamp ×3
ajax ×2
mysql ×2
sql ×2
datepicker ×1
datetime ×1
event-driven ×1
grep ×1
html ×1
https ×1
jquery ×1
optimization ×1
regex ×1
sajax ×1
security ×1
sql-like ×1