Bia*_*nca 8 php mysql performance .htaccess
我有一个新的网站(我正在建立一个),我想确保我正确地做,而不是在1个月后重新设计.
所以我有这样的页面:
/candy
/candy/chocolate
/drink
/drink/beer
Run Code Online (Sandbox Code Playgroud)
所以我看看stackoverflow关于我怎么能这样做,我发现:
RewriteRule ^([a-z]+)/([a-z]+)/?$ index.php?category=$1&page=$2 [NC,L]
Run Code Online (Sandbox Code Playgroud)
现在,这将有效,但我的问题是关于执行.很明显,$ _GET [category]将是名称,而页面将是巧克力.
现在当我做我的查询时,我会这样做:
$sql = "SELECT myfields FROM mytable WHERE name = '" . $_GET['category'] . "'";
Run Code Online (Sandbox Code Playgroud)
现在,如果我使用INT的主键,会更好吗?如果是这样,我可以在我的.htaccess中做些什么呢?
不幸的是,使用名称并将其转换为唯一ID可能比在名称本身上创建索引要花费更长的时间.
以下是我根据您的网址推荐的内容:
添加索引到页面的名称
ALTER TABLE `mytable` ADD key indexname (columnname);
Run Code Online (Sandbox Code Playgroud)
例:
ALTER TABLE `page` ADD key pagename (name);
Run Code Online (Sandbox Code Playgroud)
现在,因为结构是不同的/candyvs /candy/chocolate,我假设你有某种结构,如带有列表(/糖果)和特定列表(/ candychocolate)的主页面,所以在这种情况下你可以使用这个:
RewriteRule ^([a-z]+)/?$ index.php?category=$1&page=list [NC,L]
RewriteRule ^([a-z]+)/([a-z]+)/?$ index.php?category=$1&page=$2 [NC,L]
Run Code Online (Sandbox Code Playgroud)
然后,您只需使用索引字段查询类别和页面.这会很快(当然没有INT那么快,但仍然很快).
对于您可以执行的第一个查询:
$name = addslahes($name);
SELECT fields FROM category WHERE category = '$name';
Run Code Online (Sandbox Code Playgroud)
当你得到一个页面,你可以使用:
$categoryname = addslahes($categoryname);
$pagename = addslahes($pagename);
SELECT fields FROM page LEFT JOIN category ON (page.categoryid = category.id) WHERE page = '$pagename' AND category = '$categoryname';
Run Code Online (Sandbox Code Playgroud)
这样,通过使用类别和页面,您将避免找不到页面(404).
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |