What technical details should a programmer of a web application consider before making the site public?

What things should a programmer implementing the technical details of a web
application consider before making the site public? If Jeff
Atwood
can forget about HttpOnly
cookies
, sitemaps,
and cross-site request
forgeries
all in the same site, what important thing could I be
forgetting as well?

I‘m thinking about this from a web developer‘s perspective, such that someone
else is creating the actual design and content for the site. So while usability
and content may be more important than the platform, you the programmer have
little say in that. What you do need to worry about is that your implementation
of the platform is stable, performs well, is secure, and meets any other
business goals (like not cost too much, take too long to build, and rank as well
with Google as the content supports).

Think of this from the perspective of a developer who‘s done some work for
intranet-type applications in a fairly trusted environment, and is about to have
his first shot and putting out a potentially popular site for the entire big bad
world wide web.

Also, I‘m looking for something more specific than just a vague "web
standards" response. I mean, HTML, JavaScript, and CSS over HTTP are pretty much
a given, especially when I‘ve already specified that you‘re a professional web
developer. So going beyond that, Which standards? In what
circumstances, and why? Provide a link to the standard‘s
specification.

The idea here is that most of us should already know
most of what is on this list. But there just might be one or two items
you haven‘t really looked into before, don‘t fully understand, or maybe never
even heard of.

Interface and User Experience

  • Be aware that browsers implement standards inconsistently and make sure
    your site works reasonably well across all major browsers. At a minimum test
    against a recent Gecko
    engine (Firefox), a WebKit engine (Safari
    and some mobile browsers), Chrome,
    your supported IE
    browsers
    (take advantage of the Application
    Compatibility VPC Images
    ), and Opera.
    Also consider how browsers render your
    site
    in different operating systems.

  • Consider how people might use the site other than from the major browsers:
    cell phones, screen readers and search engines, for example. — Some
    accessibility info: WAI and Section508,
    Mobile development: MobiForge.

  • Staging: How to deploy updates without affecting your users. Have one or
    more test or staging environments available to implement changes to
    architecture, code or sweeping content and ensure that they can be deployed in
    a controlled way without breaking anything. Have an automated way of then
    deploying approved changes to the live site. This is most effectively
    implemented in conjunction with the use of a version control system (CVS,
    Subversion, etc.) and an automated build mechanism (Ant, NAnt, etc.).

  • Don‘t display unfriendly errors directly to the user.

  • Don‘t put users‘ email addresses in plain text as they will get spammed to
    death.

  • Add the attribute rel="nofollow" to user-generated links to avoid spam.

  • Build
    well-considered limits into your site
    - This also belongs under
    Security.

  • Learn how to do progressive
    enhancement
    .

  • Redirect after a
    POST
    if that POST was successful, to prevent a refresh from submitting
    again.

  • Don‘t forget to take accessibility into account. It‘s always a good idea
    and in certain circumstances it‘s a legal
    requirement
    . WAI-ARIA and
    WCAG 2 are good resources in this
    area.

  • Don‘t make me think

Security

Performance

  • Implement caching if necessary, understand and use HTTP
    caching
    properly as well as HTML5
    Manifest
    .

  • Optimize images - don‘t use a 20 KB image for a repeating background.

  • Learn how to gzip/deflate
    content
    (deflate
    is better
    ).

  • Combine/concatenate multiple stylesheets or multiple script files to
    reduce number of browser connections and improve gzip ability to compress
    duplications between files.

  • Take a look at the Yahoo
    Exceptional Performance
    site, lots of great guidelines, including
    improving front-end performance and their YSlow
    tool (requires Firefox, Safari, Chrome or Opera). Also, Google
    page speed
    (use with browser
    extension
    ) is another tool for performance profiling, and it optimizes
    your images too.

  • Use CSS Image Sprites
    for small related images like toolbars (see the "minimize HTTP requests"
    point)

  • Busy web sites should consider splitting
    components across domains
    . Specifically...

  • Static content (i.e. images, CSS, JavaScript, and generally content that
    doesn‘t need access to cookies) should go in a separate domain that
    does not use cookies
    , because all cookies for a domain and its
    subdomains are sent with every request to the domain and its subdomains. One
    good option here is to use a Content Delivery Network (CDN).

  • Minimize the total number of HTTP requests required for a browser to
    render the page.

  • Utilize Google
    Closure Compiler
    for JavaScript and other
    minification tools
    .

  • Make sure there’s a favicon.ico file in the root of the site,
    i.e. /favicon.ico. Browsers
    will automatically request it
    , even if the icon isn’t mentioned in the
    HTML at all. If you don’t have a /favicon.ico, this will result
    in a lot of 404s, draining your server’s bandwidth.

SEO (Search Engine Optimization)

  • Use "search engine friendly" URLs, i.e. use
    example.com/pages/45-article-title instead of
    example.com/index.php?page=45

  • When using # for dynamic content change the # to
    #! and then on the server
    $_REQUEST["_escaped_fragment_"] is what googlebot uses instead of
    #!. In other words, ./#!page=1 becomes
    ./?_escaped_fragments_=page=1. Also, for users that may be using
    FF.b4 or Chromium, history.pushState({"foo":"bar"}, "About",
    "./?page=1");
    Is a great command. So even though the address bar has
    changed the page does not reload. This allows you to use ?
    instead of #! to keep dynamic content and also tell the server
    when you email the link that we are after this page, and the AJAX does not
    need to make another extra request.

  • Don‘t use links that say "click
    here"
    . You‘re wasting an SEO opportunity and it makes things harder for
    people with screen readers.

  • Have an XML sitemap, preferably in
    the default location /sitemap.xml.

  • Use <link
    rel="canonical" ... />
    when you have multiple URLs that point to
    the same content, this issue can also be addressed from Google
    Webmaster Tools
    .

  • Use Google Webmaster Tools
    and Bing Webmaster
    Tools
    .

  • Install Google Analytics
    right at the start (or an open source analysis tool like Piwik).

  • Know how robots.txt
    and search engine spiders work.

  • Redirect requests (using 301 Moved Permanently) asking for
    www.example.com to example.com (or the other way
    round) to prevent splitting the google ranking between both sites.

  • Know that there can be badly-behaved spiders out there.

  • If you have non-text content look into Google‘s sitemap extensions for
    video etc. There is some good information about this in Tim
    Farley‘s answer
    .

Technology

  • Understand HTTP and
    things like GET, POST, sessions, cookies, and what it means to be
    "stateless".

  • Write your XHTML/HTML
    and CSS according to the W3C
    specifications
    and make sure they validate. The goal here is to avoid
    browser quirks modes and as a bonus make it much easier to work with
    non-standard browsers like screen readers and mobile devices.

  • Understand how JavaScript is processed in the browser.

  • Understand how JavaScript, style sheets, and other resources used by your
    page are loaded and consider their impact on perceived performance.
    It is now widely regarded as appropriate to move
    scripts to the bottom
    of your pages with exceptions typically being things
    like analytics apps or HTML5 shims.

  • Understand how the JavaScript sandbox works, especially if you intend to
    use iframes.

  • Be aware that JavaScript can and will be disabled, and that AJAX is
    therefore an extension, not a baseline. Even if most normal users leave it on
    now, remember that NoScript is becoming
    more popular, mobile devices may not work as expected, and Google won‘t run
    most of your JavaScript when indexing the site.

  • Learn the difference
    between 301 and 302 redirects
    (this is also an SEO issue).

  • Learn as much as you possibly can about your deployment platform.

  • Consider using a Reset
    Style Sheet
    or normalize.css.

  • Consider JavaScript frameworks (such as jQuery, MooTools, Prototype,
    Dojo or YUI
    3
    ), which will hide a lot of the browser differences when using JavaScript
    for DOM manipulation.

  • Taking perceived performance and JS frameworks together, consider using a
    service such as the Google
    Libraries API
    to load frameworks so that a browser can use a copy of the
    framework it has already cached rather than downloading a duplicate copy from
    your site.

  • Don‘t reinvent the wheel. Before doing ANYTHING search for a component or
    example on how to do it. There is a 99% chance that someone has done it and
    released an OSS version of the code.

  • On the flipside of that, don‘t start with 20 libraries before you‘ve even
    decided what your needs are. Particularly on the client-side web where it‘s
    almost always ultimately more important to keep things lightweight, fast, and
    flexible.

Bug fixing

  • Understand you‘ll spend 20% of your time coding and 80% of it maintaining,
    so code accordingly.

  • Set up a good error reporting solution.

  • Have a system for people to contact you with suggestions and
    criticisms.

  • Document how the application works for future support staff and people
    performing maintenance.

  • Make frequent backups! (And make sure those backups are functional) Ed
    Lucas‘s answer
    has some advice. Have a restore strategy, not just a backup
    strategy.

  • Use a version control system to store your files, such as Subversion,
    Mercurial or Git.

  • Don‘t forget to do your Acceptance Testing. Frameworks like Selenium
    can help.

  • Make sure you have sufficient logging in place using frameworks such as log4j, log4net
    or log4r. If something goes wrong on
    your live site, you‘ll need a way of finding out what.

  • When logging make sure you capture both handled exceptions, and unhandled
    exceptions. Report/analyse the log output, as it‘ll show you where the key
    issues are in your site.

Lots of stuff omitted not necessarily because they‘re not useful answers, but
because they‘re either too detailed, out of scope, or go a bit too far for
someone looking to get an overview of the things they should know. Please feel
free to edit this as well, I probably missed some stuff or made some
mistakes.

source: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before

What technical details should a programmer of a web application
consider before making the site public?,布布扣,bubuko.com

What technical details should a programmer of a web application
consider before making the site public?

时间: 2024-10-25 09:16:58

What technical details should a programmer of a web application consider before making the site public?的相关文章

Articles Every Programmer Must Read

http://javarevisited.blogspot.sg/2014/05/10-articles-every-programmer-must-read.html Being a Java programmer and Software developer, I have learned a lot from articles titled as What Every Programmer Should Know about ..... , they tend to give a lot

蓝牙Bluez的编程实现

蓝牙的各个协议栈的简介 2 1.1.蓝牙技术 2 1.1.蓝牙协议栈 2 1.2.蓝牙技术的特点 4 1.2.1.蓝牙协议栈体系结构 4 1.2.2.蓝牙协议栈低层模块 5 1.2.3.软件模块 5 1.3.蓝牙的一些Profile 6 2.Bluez和D-Bus 8 2.1.Bluez和D-Bus体系结构 8 2.2.D-Bus介绍 10 2.3.Bluez的安全接口 14 2.4.Bluez适配器接口 19 2.5.Bluez配对 19 2.6.Bluez绑定 20 3.Bluez编程实现 

Distinguish Business Exceptions from Technical

Distinguish Business Exceptions from Technical Dan Bergh Johnsson THERE ARE BASiCALLY TWO REASONS that things go wrong at runtime: technical problems that prevent us from using the application and business logic that prevents us from misusing the app

[转]Clean Code Principles: Be a Better Programmer

原文:https://www.webcodegeeks.com/web-development/clean-code-principles-better-programmer/ ----------------------------------------------------------------- "My code is working well, the website I built is looking great, and my client is happy. So why

Technical analysis of client identification mechanisms

http://www.chromium.org/Home/chromium-security/client-identification-mechanisms Chromium‎ > ‎Chromium Security‎ > ‎ Technical analysis of client identification mechanisms Written by Artur Janc <[email protected]> and Michal Zalewski <[email

Windows Serer 2016 technical preview 3 探究 - 2 新功能

新的活动目录联合服务.活动目录联合服务(AD FS)在Windows Server技术预览版包括新的功能,使您可以配置AD FS验证存储在轻量级目录访问协议(LDAP)目录用户.更多信息,查看Active Directory联合身份验证服务概述.在Hyper-V的新技术预览.本主题介绍在Windows Server技术预览版的Hyper-V角色的新的和已更改的功能,在Windows 10技术预览版客户端运行Hyper-V,和微软Hyper-V Server技术预览. Windows服务器的反恶意

Java内部类详解(一)(转自:http://blog.csdn.net/wangpeng047/article/details/12344593)

很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听过也没有使用过,内部类在Java中其实是比较重要的一块内容,掌握好这门知识对于编程来说,犹如插上一对翅膀. 一.概念 内部类是指在一个外部类的内部再定义一个类,类名不需要和文件名相同. 对于一个名为outer的外部类和其内部定义的名为inner的内部类.编译完成后会生成outer.class和outer$inner.class两个类.所以内部类的成员变量.方法名可以和外部类的相同. 内部类可以是静态static和非静态的,

py3 web.py转https://blog.csdn.net/weixin_42024288/article/details/80364441

https://blog.csdn.net/weixin_42024288/article/details/80364441 1.安装webpy模块: pip install web.py==0.40.dev 另外将: C:\Python34\Lib\site-packages\web.py-0.40.dev0-py3.4.egg\web\template.py 中约1022行return Template(open(path).read(), filename=path, **self._ke

How To Ask Questions The Smart Way

How To Ask Questions The Smart Way Eric Steven Raymond Thyrsus Enterprises <[email protected]> Rick Moen <[email protected]> Copyright ? 2001,2006,2014 Eric S. Raymond, Rick Moen Revision History Revision 3.10 21 May 2014 esr New section on St