我正在努力加速我的网站.Google洞察(https://developers.google.com/speed/pagespeed/insights)告诉我,一个关键问题是启用GZip压缩.
该网站的地址是http://user2.net 它基于codeigniter框架.
我已经启用了gzip压缩,并对我的.htaccess文件进行了以下更改:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
<files *.html>
SetOutputFilter DEFLATE
</files>
Run Code Online (Sandbox Code Playgroud)
我使用此工具测试了该站点:http: //www.gidnetwork.com/tools/gzip-test.php 它说gzip已启用.
我错过了什么?
有没有办法在WITH表达式中定义变量?就像是:
;WITH SomeName AS (
declare @somevar decimal
set @somevar = ...
SELECT ....)
Run Code Online (Sandbox Code Playgroud)
可能?
我正在使用实体框架并建模多对多关系.
我使用流畅的API创建了两个实体之间的关系(假设用户和组):
this.HasMany(t => t.Users)
.WithMany(t => t.Groups)
.Map(
m =>
{
m.ToTable("GroupMembers");
m.MapLeftKey("Group_Id");
m.MapRightKey("User_Id");
});
Run Code Online (Sandbox Code Playgroud)
这很好用,但我也希望能够直接引用GroupMembers表.要做到这一点,我有类似的东西:
[Table("GroupMembers")]
public class GroupMember
{
#region Properties
/// <summary>
/// Gets or sets the group.
/// </summary>
public virtual Group Group { get; set; }
/// <summary>
/// Gets or sets the Id of rht group.
/// </summary>
[Key]
[Column("Group_Id", Order = 1)]
public int GroupId { get; set; }
/// <summary>
/// Gets or sets the user.
/// </summary>
public virtual User …Run Code Online (Sandbox Code Playgroud) Content-Security-Policy HTTP标头用于阻止来自不受信任服务器的内联脚本和资源.但是,Google Analytics代码段示例依赖于这两者.这方面的最佳做法是什么?
这是我目前使用的Content-Security-Policy标头:
default-src 'self'; script-src 'self' https://ssl.google-analytics.com; img-src 'self' http://www.google-analytics.com/__utm.gif https://ssl.google-analytics.com/__utm.gif;
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经完成了以下工作:
我在我的html中添加了两个脚本标签:
<script src="/js/google-analytics.js"></script>
<script src="https://ssl.google-analytics.com/ga.js" async="true"></script>
Run Code Online (Sandbox Code Playgroud)
google-analytics.js使用_setAccount和_trackPageview设置_gaq数组.
我将ga.js的域添加到了script-src中.
我注意到ga.js正在加载两个图像,所以我将它们添加到img-src中.
有什么我想念的吗?Google会改变我的想法并打破这一切吗?有官方推荐吗?
我希望从任何给定的域名SSL证书获取数据.例如,我想放入任何网站地址,例如" http://stackoverflow.com ",我的代码将首先检查是否存在SSL证书.如果确实如此,我希望它能够取出证书的失效日期.[我正在阅读DB的Domainnames]示例:http://www.digicert.com/help/
我需要创建一个Web服务来检查到期日期.我怎么能实现它? - 我查了很多不同的东西,比如RequestCertificateValidationCallback和ClientCertificates等.
我可能完全错了(因此我需要帮助)但是我会创建一个HTTPWebRequest然后以某种方式请求客户端证书和特定元素吗?
我尝试了提供@ SSL证书预取.NET的示例,但我得到了forbitten 403错误.
为什么我们有两种配置来在Visual Studio Code中设置构建环境?他们之间有什么区别?
我对工作中的大型项目有一个设计理念,我想我已经弄明白了,但我真的很想得到一些反馈:a)一般的想法,以及b)我提议的实施.
基本思路很简单:我想创建一个ASP MVC应用程序,可以在将来使用其他控制器和视图进行扩展,而无需重新编译代码.我们的想法是让一个MVC应用程序具有一组非常基本的功能,然后通过添加另一个'Application.dll'来扩展功能,该应用程序包含特定于该应用程序的控制器,数据和业务逻辑.视图将被简单地复制在安装期间进入与主MVC应用程序相同的目录.
问题是MVC在同一个程序集中的类型上进行路由,因此即使我将路由定义移动到数据库,MvcHttpHandler也无法将任何内容路由到新的Dll,因为它不"知道"控制器类型在里面.看一下MVC代码,我发现要加载控制器,他们只是调用Activator.CreateInstance,它只在当前程序集中查找.
我的解决方案很简单,但也许我错过了一些东西:我将通过直接替换ControllerFactory(不确定如何做)或通过在派生类中复制该功能来覆盖MvcHttpHandler.新代码将读取请求并尝试首先从当前程序集加载控制器,然后从扩展程序集加载控制器.一旦找到正确的程序集,我将使用CreateInstance并将该程序集传递给它以获得我想要的控制器.
我对使用方法与C#中的对象进行交互的不同方式有点困惑,特别是以下主要设计差异和后果:
例:
public class MyPoint
{
public double x { get; set; }
public double y { get; set; }
public double? DistanceFrom(MyPoint p)
{
if (p != null)
{
return Math.Sqrt(Math.Pow(this.x - p.x, 2) + Math.Pow(this.y - p.y, 2));
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只需将方法放在类定义中就可以完成所需的结果,那么为什么POCO与静态辅助类或扩展方法结合起来会更好?
我正在研究的网站有一些相当复杂的路由结构,我们在使用路由引擎来构建URL时遇到了一些困难,就像我们需要构建它们一样.
我们有一个搜索结果页面,它使用基于RegEx的模式匹配将几个变量分组到一个路径段中(即"www.host.com/{structuralParameters}"可以是:"www.host.com/variableA-variableB- variableC" - 其中变量A到C都是可选的).经过一番工作,这对我们很有用.
我们遇到的问题解决了ActionLink方法令人讨厌的特性:如果指向相同的控制器/操作,它将保留现有的路由值,无论您是否需要它们.我们更愿意控制链接的外观,在某些情况下,不能保留现有参数.一个例子是我们网站的主导航导向没有设置参数的搜索结果页面 - 如果您愿意,可以使用默认搜索页面.我说这是一个烦人的功能,因为它是一个罕见的ASP.Net MVC框架实例,似乎在没有明显扩展点的情况下决定实现 - 我们宁愿不在我们的母版页中创建自定义ActionLink代码来编写简单的导航链接!
我已经看到有人说你需要明确地将这些参数设置为空字符串,但是当我们尝试这个时它只是将参数从路由值更改为查询字符串参数.对我来说似乎不应该要求我们明确地将我们未明确传递的值作为参数传递给ActionLink方法,但如果这是我们唯一的选项,我们将使用它.但是,目前如果它在查询字符串中显示,那么将参数直接放入路径对我们来说是无用的.
我知道我们的路由结构加剧了这个问题 - 如果我们使用更简单的方法(即www.host.com/variableA/variableB/variableC),我们可能不会有任何问题,但我们的URL结构不可协商 - 它是旨在满足与可用性,SEO和链接/内容共享相关的非常具体的需求.
我们如何使用Html.ActionLink生成页面链接而不会回退当前路径数据(或者,如果可能,需要明确排除路径段),即使这些链接导致相同的操作方法?
如果我们确实需要明确排除路径段,我们如何防止该方法将路由呈现为查询字符串参数?
这个看似很小的问题给我们带来了惊人的悲痛,我将感谢您解决它的任何帮助.
编辑:根据LukLed的要求,这是一个示例ActionLink调用:
// I've made it generic, but this should call the Search action of the
// ItemController, the text and title attribute should say "Link Text" but there
// should be no parameters - or maybe just the defaults, depending on the route.
//
// Assume that this can be called from *any* page but should not be …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×2
c# ×2
actionlink ×1
asp.net ×1
c++ ×1
compression ×1
gzip ×1
many-to-many ×1
poco ×1
routing ×1
seo ×1
sql-server ×1
ssl ×1